Jquery 无应答跨域ajax查询
正在尝试执行简单的跨源请求。使用ajax跨源并设置自己的“代理”来完成这项工作。奇怪的是我没有收到任何答案,或者是成功的消息,或者是一个错误Jquery 无应答跨域ajax查询,jquery,cross-domain,Jquery,Cross Domain,正在尝试执行简单的跨源请求。使用ajax跨源并设置自己的“代理”来完成这项工作。奇怪的是我没有收到任何答案,或者是成功的消息,或者是一个错误 $.ajax({ crossOrigin: true, proxy: 'proxylink.php', url: url, type: 'GET', success: function(res) {
$.ajax({
crossOrigin: true,
proxy: 'proxylink.php',
url: url,
type: 'GET',
success: function(res) {
//var headline = $(res.responseText).find('title').text();
$('#success').html(res.responseText).text();
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#error').html(msg);
},
}
我的代理文件:
<?php
$url = (isset($_GET['url'])) ? $_GET['url'] : false;
if(!$url) exit;
$referer = (isset($_SERVER['HTTP_REFERER'])) ? strtolower($_SERVER['HTTP_REFERER']) : false;
$is_allowed = $referer && strpos($referer, strtolower($_SERVER['SERVER_NAME'])) !== false; //deny abuse of your proxy from outside your site
$string = ($is_allowed) ? utf8_encode(file_get_contents($url)) : 'You are not allowed to use this proxy!';
$json = json_encode($string);
$callback = (isset($_GET['callback'])) ? $_GET['callback'] : false;
if($callback){
$jsonp = "$callback($json)";
header('Content-Type: application/javascript');
echo $jsonp;
exit;
}
echo $json;
?>
如果我在success中执行console.log或alert(针对字符串),它会在控制台中写入,因此我假设ajax调用返回success。但是我不能计算res返回的值
有什么线索吗?
谢谢。基于您的
proxylink.php
我认为您应该这样使用它:
$.ajax({
crossOrigin: true,
url: 'proxylink.php',
data: {url:url},
type: 'GET',
success: function(res) {
//var headline = $(res.responseText).find('title').text();
$('#success').html(res.responseText).text();
},
error: function (jqXHR, exception) {
var msg = '';
if (jqXHR.status === 0) {
msg = 'Not connect.\n Verify Network.';
} else if (jqXHR.status == 404) {
msg = 'Requested page not found. [404]';
} else if (jqXHR.status == 500) {
msg = 'Internal Server Error [500].';
} else if (exception === 'parsererror') {
msg = 'Requested JSON parse failed.';
} else if (exception === 'timeout') {
msg = 'Time out error.';
} else if (exception === 'abort') {
msg = 'Ajax request aborted.';
} else {
msg = 'Uncaught Error.\n' + jqXHR.responseText;
}
$('#error').html(msg);
},
}
res
的值是多少?同时删除crossOrigin
,因为不需要它。这是问题所在,它不会返回任何值。但是我发送给ajax调用的链接是正确的,并进行了检查。我不知道如何处理这个“错误”以及如何知道发生了什么。你说它会写入控制台,那么这里显示的值是多少?对不起,这是我的错。我已经纠正了我的态度。我的意思是,如果我在success函数中做了类似于alert(“Hello”)的事情,它就会工作,所以我假设它返回的是一个成功,而不是一个错误。但是res变量是空的。在这种情况下,问题似乎出在proxylink.php
文件中,而不是JS文件中。还要注意,proxy
不是$.ajax
的标准属性,因此您可能仍然直接调用外部域并遇到CORS错误。您需要手动实现代理URL,直到相同。不作为输出。如果删除crossOrigin:true?corssorigin来自插件本身。需要启用它才能发出请求并使用代理。