2

我在访问由 php 脚本返回的 JSONP 数组时遇到问题,我正在处理跨域请求。我的代码是:

$('input#searchlocation').click(function () {
    $.ajax({
        url: 'http://mydomain/searchlocation.php',
        type: 'get',
        dataType: 'jsonp',
        data: $('form#searchlocfrm').serialize(),
        processData: false,
        crossDomain: true,
        contentType: "application/json",
        success: function (data) {
            $("#searchlocation_result").html("");
            $.each(data.items, function (i, locdata) {
                console.log(locdata);
            });
        }
    });
});    

PHP:返回数组:

echo $_GET["callback"] . "(" . json_encode($res) . ")";    

请帮助我如何将返回响应打印到我的页面中。
提前致谢。

4

3 回答 3

3

您需要附加?callback=?到您的网址,并使用.getJSON

$('input#searchlocation').click(function () {
    $.getJSON('http://mydomain/searchlocation.php?callback=?', $('form#searchlocfrm').serialize(), function (data) {
        $("#searchlocation_result").html("");
        $.each(data.items, function (i, locdata) {
            console.log(locdata);
        });
    });
});
于 2012-08-22T09:50:16.027 回答
0

这应该足够了:

$.ajax({
    url: 'http://mydomain/searchlocation.php',
    dataType: 'jsonp',
    data: $('form#searchlocfrm').serialize(),
    success: function (data) {
        // ...
    }
});

同样在服务器端:

header('Content-type: application/javascript');
echo $_GET["callback"] . "(" . json_encode($res) . ")";
于 2012-08-22T09:58:31.103 回答
0
$('input#searchlocation').click(function () {
    $.ajax({
        url: 'http://mydomain/searchlocation.php',
        type: 'get',
        dataType: 'jsonp',
        data: $('form#searchlocfrm').serialize() + "callback=returnData",
        processData: false,
        crossDomain: true,
        contentType: "application/json"
    });
});

function returnData(data){
     $("#searchlocation_result").html("");
     $.each(data.items, function (i, locdata) {
            console.log(locdata);
     });
}   

这应该是因为它使用 jsonp 的想法是你有一个回调函数,而在 ajax 中没有成功,因为它是 jsonp

于 2012-08-22T09:53:03.373 回答