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=?あなたはあなたのURLに追加し、使用する必要があります.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
$('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 に答える
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 に答える