Jquery 无应答跨域ajax查询

Jquery 无应答跨域ajax查询,jquery,cross-domain,Jquery,Cross Domain,正在尝试执行简单的跨源请求。使用ajax跨源并设置自己的“代理”来完成这项工作。奇怪的是我没有收到任何答案,或者是成功的消息,或者是一个错误 $.ajax({ crossOrigin: true, proxy: 'proxylink.php', url: url, type: 'GET', success: function(res) {

正在尝试执行简单的跨源请求。使用ajax跨源并设置自己的“代理”来完成这项工作。奇怪的是我没有收到任何答案,或者是成功的消息,或者是一个错误

        $.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来自插件本身。需要启用它才能发出请求并使用代理。