我有这个 JQUERY 代码:
$(document).ready(function() {
listarDetalle();
});
function listarDetalle(){
var accion="listar";
var URLprotocol = window.location.protocol;
$.ajax({
type: "POST",
url: URLprotocol+"//gestionweb/includes/php/procesoDetalle.php",
data: { "accion":accion},
dataType:'json',
error: function(){
alert("error petición ajax");
},
success: function(data){
console.log(data);
for (var i = 0; i < data.length; i++) {
var newRow =
"<tr>" +
"<td>" + data[i].idp + "</td>" +
"<td>" + data[i].nombre + "</td>"
"<td>" + data[i].marca + "</td>" +
"<td>" + data[i].cantidad + "</td>" +
"<td><input type='radio' id='"+data[i].idproducto+"' name='seleccion'/></td>"+
"</tr>";
$(newRow).appendTo("#ticket tbody");
} }
}).fail( function( jqXHR, textStatus, errorThrown ) {
if (jqXHR.status === 0) {
alert('Not connect: Verify Network.');
} else if (jqXHR.status == 404) {
alert('Requested page not found [404]');
} else if (jqXHR.status == 500) {
alert('Internal Server Error [500].');
} else if (textStatus === 'parsererror') {
alert('Requested JSON parse failed.');
} else if (textStatus === 'timeout') {
alert('Time out error.');
} else if (textStatus === 'abort') {
alert('Ajax request aborted.');
} else {
alert('Uncaught Error: ' + jqXHR.responseText);
}
});;
};
我得到这个错误:
阻止跨域请求:同源策略不允许读取http://gestionweb/includes/php/procesoDetalle.php处的远程资源。(原因:CORS 请求被拒绝。)
尝试:
dataType:'jsonp',
我在网站上找到的,但如果我这样做,它会告诉我脚本加载失败。我真的不知道该怎么办。我附上了标题的谷歌浏览器图片......地址看起来很好,假设它是:
http://localhost/gestionweb/includes/php/procesoDetalle.php
如您所见,它在 DetailProcess.php 中给出了错误 302,因为资源已被移动,但我不明白。
我从另一个脚本中调用它,一切都很好
首先,我必须告诉你这行是不必要的:
如果您想保留架构(
http:
或https:
),请不要指出它:另一方面,如果外部页面未授权您的网站这样做, CORS(也称为跨域资源共享)规则会阻止您从外部页面访问资源。
默认情况下,假定同一来源(相同 URL 或Same Origin Policy)内的所有查询都是安全的,并且不使用 CORS 进行验证,仅对外部来源(或 URL)的查询。
为此,浏览器使用HTTP 方法进行先前的查询(预检请求)。
OPTIONS
正是先前的查询使您失败,因此假定禁止访问该外部 API。
实现对先前查询的响应的一种方法是将以下代码添加到 PHP 脚本的开头:
注意:此代码允许从任何 URL访问您的 API 。
如果您想限制 API 访问少数 URL,那么您应该执行以下操作: