代码之家  ›  专栏  ›  技术社区  ›  user1443519

启用CORS后,服务器不会返回AJAX GET请求

  •  1
  • user1443519  · 技术社区  · 13 年前

    我正在尝试启用外部源来向我的服务器发出GET请求。现在我只是在我的个人服务器上通过godaddy进行测试。这会是个问题吗?

    我在试图向其发出请求的页面上有以下代码

    //page.php
    <?php
    header("Content-Type: application/json")
    header('Access-Control-Allow-Origin: *');
    header('Access-Control-Allow-Methods: GET');  
    
    include_once 'php_dom/simple_html_dom.php';
    include_once 'phpQuery.php';
    
    
    if(isset($_GET['item'])){
        echo json_encode(array("data" => $_GET['item']));
    }
    else{
        echo json_encode(array("Error"=>"No item provided"));
    }
    

    我试着提出这样的请求(显然是用我的URL),但我没有得到任何回复。

    $.getJSON("http://www.example.com/page.php?item=123&format=json&callback=?", function(data) {
        alert(data);
    });
    

    Chrome开发人员显示了一个成功的请求,但没有返回任何内容。我是不是做错了什么?

    1 回复  |  直到 13 年前
        1
  •  2
  •   Dr.Molle    13 年前

    当您使用 callback=? 响应将作为JSONP进行处理。试试这样的方法:

    if(isset($_GET['item']) && isset($_GET['callback'])){
        echo $_GET['callback'].'('.json_encode(array("data" => $_GET['item'])).');';
    }
    

    …或省略回调参数。