2010-11-23 11 views
3

以下のコードはうまく動作しますが、唯一の問題は私にtextStatusを与えていないことです。 textStatusを取得するには何が必要ですか?リクエストのコールバック 'textStatus'のステータス

var url = "http://host/MyServiceImpl.svc/GetCount?method=?"; 
     $.ajax({ 
      dataType: 'jsonp', 
      data: { Id: '1' }, 
      jsonp: 'jsonp_callback', 
      url: url, 
      success: function (json, textStatus) { 
       alert(json.d); 
       alert(textStatus); 
      }, 
      error: function (XMLHttpRequest, textStatus, errorThrown) { 
       debugger 
      } 
     }); 

または

$.getJSON(url, { Id: '1'}, 
    function (data, textStatus) { 
     alert(textStatus); 
}); 
+0

デバッグにはあまり提供されていませんが、[jquery.jsonp plug-in](http://code.google.com/p/jquery-jsonp/)では 'textStatus'(" error "/" "成功")成功、エラー、およびjsonp呼び出しの完了:[関連する質問](http://stackoverflow.com/questions/1002367/jquery-ajax-jsonp-ignores-a-timeout-and-doesnt-fireエラーイベント)。注: 'textStatus'はこれらのハンドラ関数の大部分の2番目のパラメータです。 – patridge

答えて

1

JSONPはソースとしてターゲットURLを使って文書にタグを書き込むことによって動作します。次に、サーバーは関数呼び出しで応答をラップします。

somecallback(your data) 

これの欠点は、XMLHttpRequestのが使用されていないということですので、JSONPのための「本当の」誤り検出されません。だから、基本的にjsonPはそれ自体のハックだから動作しません。

これには、障害を通知する必要があるほとんどのケースをカバーする簡単な回避策があります。返されたjsonに.Successプロパティと、おそらく.ErrorMessageがあるようにします。私は通常、このような構造のオブジェクトを使用します。404のまたは500年代ofcourseの

{ Success: true|false, ErrorMessage: "", Data:json} 

はまだ問題が発生しますが、キーはJSONPを提供する際に、それらを回避しようとすることです。

+0

上記のコードが正確にどこにあるのかサンプルを見せてください。 –

+0

私は上記の解決策を実装していませんが、終了するために閉じるだけです。 –

関連する問題