1

を使用した単純な ajax リクエストがありdata-type: 'script'ます。

レスポンスのステータス コードが 200 の場合、返された JavaScript は正常に実行されます。500 や 403 のようなエラー コードの場合、実行は行われません。

ドキュメントを3回読み直しました:

"script": 応答を JavaScript として評価し、プレーン テキストとして返します。...

これは、成功またはその他の条件を条件としているとは述べていません。

私のサーバーは「text/javascript」の応答タイプで応答しているので、「500」ステータス コードで応答したとしても、jQuery はそのコンテンツ タイプを処理する (つまり、評価する) と想定していました (つまり、「ちょっと、あなたが私に頼んだことをしないでください」)

これはjQueryの問題ですか?それとも、これは予期された動作であり、ドキュメントは不完全ですか?

4

1 に答える 1

1

バージョン 1.5 以降、ajax 呼び出しは遅延オブジェクトを返します。

だからあなたが使うことができます

$.ajax({/*options*/})
  .done(function(data, status, jqxhr){ alert("$.ajax completed!"); })
  .fail(function(jqxhr, settings, exception){ alert("$.ajax failed!"); });

.doneリクエストが成功すると、メソッドが呼び出される前に実際のスクリプトが評価されることに注意してください。

于 2012-05-25T18:15:07.993 に答える