1

私のjQueryfuは新しいので、この質問が本当にそれであるかどうかは明らかです。

jQuery ajaxのドキュメントには、次のように定義されたエラーと成功が示されています。

error(jqXHR, textStatus, errorThrown)
success(data, textStatus, jqXHR)

デフォルトでは、サーバー側でステータス(200、401、404など)とJSONエンコードされた応答(jsonエラーまたは成功文字列、配列、オブジェクト)が返されるため、これは少し一貫性のある方法です。等々。

基本的に何が起こっているのかというと、json文字列(coffeescript)の受信に成功すると

success: (data) ->
  $('#status').html( data )

同等のエラーバージョンではjson文字列を解析し、データオブジェクトのresponseText属性にアクセスする必要があるため、json応答文字列を直接出力できます。これは混乱を招きます。

error: (data) ->
  $('#status').html( jParse(data.responseText) )

では、どうすればクライアント側からサーバー側の整合性を反映させることができますか?つまり、jsonサーバー側で応答し、クライアントでオブジェクト属性を解析/アクセスする必要があることを知っています。

ありがとう

4

2 に答える 2

1

私が理解しているように、成功(またはその他)がHTTPステータスコードで示される「RESTful」サービスでは、エラー状態のHTTP本文に意味のあるコンテンツを入れることは想定されていません。40x代わりに、エラーコードのテキストに入れてください。

于 2012-06-15T16:12:29.573 に答える
1

わかりました。もう少し明確になりました。

dataType paramオプションが設定されていない場合、ajaxの成功の最初の引数であるdataは、mimeタイプに従って自動的に解析されます。

そのため、たとえば注文番号を含むjsonマップを処理する場合、クライアント側で解析する必要はなく、単に参照することができます。data.orderNum

一方、ajaxエラーの最初の引数jqXHRには、そのようなmimeタイプの推論はありません。これは、のような属性を参照する前に応答を解析する必要がある理由をdata.responseText説明しています。

多くの人にとっておそらく古い帽子ですが、成功/エラーから何を期待するかを知っておくと、二重引用符で囲まれた文字列の返信やその他の奇妙なことが起こりました...

于 2012-06-15T17:11:29.007 に答える