2012-04-25 17 views
3

htmlページからan.ajax jquery呼び出しを使用してクロスドメインWebサービスにアクセスしています。私はfirebugを使ってjsonpデータを見ることができますが、変数にロードしたり、デバッグのために表示することさえできません。 jsonpCallback、成功関数、完全関数を使用してデータを取得しようとすると、常に「未定義」/ヌルデータが発生します。ajax 'GET'呼び出しはjsonpを返しますが、コールバックは '未定義'データを生成します

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

$.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 
    } 
}); 

答えて

3

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

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

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); 
    } 
}); 
+0

おかげで "dystroy":

は、あなたがこのようにそれを行うhttp://api.jquery.com/jQuery.ajax/

を参照してください。私はあなたの提案を試しました(URLを_http://localhost/NotifMOD/NotifiService.svc/GetAllMessages?callback = jsonpCallbackに変更することを追加しました)。エラー機能: 'errorThrown'パラメータが "エラー:受信が呼び出されていません。 – rsamoose

+0

関数の名前(ここでは" receive ")は、jsonpの回答の先頭にある必要があります。 (サーバーが "コールバック"パラメータを使用していると仮定して)URLは "callback = receive"で終わる必要があります。 –

+0

多分、あなたのお手伝いをします:私が作るオープンソースコードクライアント:https://github.com/Canop/ braldop/blob/master/chrome/braldop/inext_com.jsとサーバー:https://github.com/Canop/braldop/blob/master/go/src/braldopserver/BraldopServer.go –

関連する問題