3

HTMLページから.ajax jquery呼び出しを利用してクロスドメインWebサービスにアクセスしています。firebug を使用して jsonp データを表示することはできますが、それを変数にロードしたり、(デバッグ目的で) 表示することさえできません。jsonpCallback、success、および complete 関数を使用してデータを取得しようとすると、常に「未定義」/null データが返されます。

最終的に、データを変数に保存する必要があります。どんな支援も大歓迎です!

$.ajax({
    data: {
        User: UserValue,
        GUID: GUIDValue
    },
    cache: false,
    dataType: "jsonp", // tried json
    type: "GET",
    crossDomain: true,
    jsonp: false,  // tried true
    jsonpCallback: function (saveData) {
        if (saveData == null) {
            alert("DATA IS UNDEFINED!");  // displays every time
        }
        alert("Success is " + saveData);  // 'Success is undefined'
    },
    url: "http://localhost/NotifMOD/NotifService.svc/GetAllMessages?callback=success?",
    async: false, // tried true
    error: function (XMLHttpRequest, textStatus, errorThrown) {
         console.log(textStatus, errorThrown);
    },
    complete: function (a, b) {
        alert(a); //[object Object]
        alert(b); // parseerror
    }
});
4

1 に答える 1

3

JSONP では、コードで関数を定義する必要があります。

jsonpCallback は、関数ではなく、この関数の名前でなければなりません。

http://api.jquery.com/jQuery.ajax/を参照してください。

あなたはこのようにします:

function receive(saveData) {
    if (saveData == null) {
            alert("DATA IS UNDEFINED!");  // displays every time
    }
    alert("Success is " + saveData);  // 'Success is undefined'
}

$.ajax({
    data: {
        User: UserValue,
        GUID: GUIDValue
    },
    cache: false,
    dataType: "jsonp", // tried json
    type: "GET",
    crossDomain: true,
    jsonp: false,  // tried true
    jsonpCallback: "receive",
    url: "http://localhost/NotifMOD/NotifService.svc/GetAllMessages?callback=receive?",
    async: false, // tried true
    error: function (XMLHttpRequest, textStatus, errorThrown) {
         console.log(textStatus, errorThrown);
    }
});
于 2012-04-25T17:22:45.617 に答える