我如何通过php追加jsonp数组返回

时间:2012-08-22 09:44:04

标签: php jquery jsonp

我有问题访问由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) . ")";    

请帮我解释如何在页面中打印回复 非常感谢。

3 个答案:

答案 0 :(得分: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);
        });
    });
});

答案 1 :(得分: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

答案 2 :(得分: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) . ")";