0

を使用して C# から jQuery への応答をキャッチできません$.ajax。エラーが発生します"SCRIPT ERROR"。JSONP を使用して応答をキャッチするにはどうすればよいですか? これは私が使用しているものです:

$.ajax({
    async: true,
    context: mrq,
    cache: false,
    type: "GET",
    url: MYURL,
    crossDomain: true,
    dataType: 'jsonp',
    data: MYDATA,
    processData: false,
    jsonp: "jsonREQ",
    jsonpCallback: "onJSONPsuccess",
    success: function (jsonText, textStatus) {}
});
4

2 に答える 2

0

サーバー側はC#だとおっしゃっていますが、WCFを使用していますか?ここにそれについての素晴らしい記事があります:http: //bendewey.wordpress.com/2009/11/24/using-jsonp-with-wcf-and-jquery/

基本的に、コールバック関数の呼び出しにラップされたjsonを返すには、WCF(または使用しているサーバー側のコード)を設定する必要があります。

ただし、jqueryを使用すると、「?Callback =?」を追加するだけで済みます。あなたのURLに、dataTypeを'jsonp'に変更し、残りのことは忘れてください。jsonpまたはjsonpCallbackオプションを設定する必要はありません。

jsonリクエストとは対照的に、jsonpリクエストは「d」プロパティでラップされていないデータを返すため、コールバック関数は次のようになります。

function(data) { var a = data.myProperty ... }

それよりも

function(data) { var a = data.d.myProperty ... }

そして、メソッド全体は次のようになります。

var url = configuration.serviceUrl + "/" + method + "?callback=?";

var options = {
    type: 'GET',
    url: url,
    data: args,
    dataType: "jsonp",
    contentType: "application/json",
    success: function(data) {
        if (callback != null) callback(data);
    }
};

if (typeof errorCallback != 'undefined')
    options.error = errorCallback;

$.ajax(options);    
于 2013-03-19T17:30:21.790 に答える
0

私が理解している限りでdataType: 'jsonp'は、返されるとすぐに引数としてコールバック関数に入れられることを意味します。だから、私はこれを試してみます:

onJSONPsuccess = function(response) {
  // do something with response, e.g.
  results = response["results"]
}

$.ajax({
  crossDomain: true,
  dataType: 'jsonp',
  data: { /*params you're sending in*/ },
  jsonp: "jsonREQ",
  jsonpCallback: "onJSONPsuccess",
  success: onJSONPsuccess
});
于 2012-08-24T10:52:07.707 に答える