1
$.ajax({
    type:           "GET",
    dataType:       "jsonp",
    jsonpCallback:  "jsoncallback",
    //async: false ,
    data: 
    {
        // some data here

    },
    url: "http://mydomain.com/checkRequest.php",
    success: function(data){

    alert("123");

            alert(data.data.NameA);

    },
    error: function(jqXHR, textStatus){
    alert("Request failed: " + textStatus);
    }
});// end of ajax

以下のURLから次の文字列を取得できます。

([{
        "data": {
            "Rate": "",
            "RoleA": "Student",
            "NameA": "studentD",
            "RoleB": "Tutor",
            "NameB": "tutorB",
            "Give": "0",
            "Get": "1",
            "Accept": "0",
            "RateCounter": ""
        }
    }
]);

http://mydomain.com/checkRequest.php?callback=jsoncallback&nameB=tutorB&roleB=Tutor&get=1&roleA=Student&nameA=studentD&give=0&_=1364082750444

ただし、アラートが発生しparsererrorます。どこが悪いのか聞いてもいいですか?

削除 してURLjsonpCallback: "jsoncallback", に変更した場合:パーサーエラーはありませんが、URL"http://mydomain.com/checkRequest.php?jsoncallback=?",alert(data.data.NameA);

4

1 に答える 1

2

おそらく、 :jsonpではなくオプションが必要です。jsonpCallback

$.ajax({
    type:           "GET",
    dataType:       "jsonp",
    jsonp:          "jsoncallback",
    // ...
});

jsonpパラメータの名前を設定し、他の例と一致します。

url: "http://mydomain.com/checkRequest.php?jsoncallback=?",

を使用すると、代わりにjsonpCallbackを設定することになり、結果として。を含むURLになります。サーバーはこれを予期していないようで、関数名なしで応答することになります。callback=jsoncallback

([{...}]);

対次のようなもの:

jQuery191_etc([{...}]);

ドキュメントから:

jsonp

jsonpリクエストのコールバック関数名をオーバーライドします。この値は、「callback =?」の「callback」の代わりに使用されます。URLのクエリ文字列の一部。したがって{jsonp:'onJSONPLoad'}、結果 'onJSONPLoad=?'はサーバーに渡されます。[...]

jsonpCallback

JSONPリクエストのコールバック関数名を指定します。この値は、j​​Queryによって自動的に生成されるランダムな名前の代わりに使用されます。[...]

于 2013-03-24T00:06:28.700 に答える