5

私の質問は、$.ajax()jQuery メソッドに関するものです。成功パラメーターを機能させることができません$.ajax()

これは機能します:

$.ajax({
    type: 'POST',
    url: "/getCodes.php?codes=billingCodes&parent="+$('#wClient').val(),
    dataType: 'json',
    success: window.alert("inside aJax statement")

});

これはしません:

 $.ajax({
    type: 'POST',
    url: "/getCodes.php?codes=billingCodes&parent="+$('#wClient').val(),
    dataType: 'json',
    success: function(){
        window.alert("inside aJax statement");
    }                       
}); 

最初のケースでは、呼び出した が機能していることを知らせる JavaScript 警告ウィンドウが表示されます$.ajax()。コードの 2 番目のブロックで変更されているのはwindow.alert()function() { window.alert(); }.

これのポイントは、$.ajax が実行されていることを確認することです。これにより、$.ajax が正常に実行されたときに実際に役立つコードをいくつか追加できfunction(){}ます。

4

6 に答える 6

0

2 番目の例は 100% 正しいです。なぜ何もしないのですか?おそらく、ajax 呼び出しが成功しないためです。「エラー」ハンドラーを追加し、ブラウザーの開発者ツール -> Network -> XHR で ajax 呼び出しが返されるかどうかを確認します。これは、壊れた/正しくない ajax リクエストの処理に本当に役立ちます

于 2013-09-18T21:56:36.637 に答える
0

あなたは正しいと思いますが、あなたの要求は成功しません。エラーハンドラも追加してみてください:

error: function(){alert("Error");};

dataType が一致しないか、そのようなものだと思います。

于 2013-09-18T21:51:16.323 に答える
0

promise を試して使用することをお勧めします。

var promise = $.ajax({
  type: 'POST',
  url: "/getCodes.php?codes=billingCodes&parent="+$('#wClient').val(),
  dataType: 'json'
});

promise.fail( function() {
  window.alert("Fail!");
});

promise.done( function() {
  window.alert("Success!");
});

ajaxこれが行うことは、呼び出しを変数に保存し、各戻り状態に追加機能を割り当てることです。ただし、返されるデータ型が実際に json であることを確認してください。そうしないと、奇妙な動作が発生する可能性があります。

js はシングルスレッドであることに注意してください。最初の例が機能する理由は、次の「成功」のコードを実際に実行し、結果を保存するためです。この場合、保存するものは何もありません。警告ウィンドウが表示されるだけです。これは、アラートが発生した後に ajax 呼び出しがクライアントを離れていることを意味します。これを確認するには、Chrome または同等の開発者ツールを使用します。

そこに関数を配置することで、ajax 呼び出しがスレッド内 (または、より正確には、応答が戻ってきたときに開始された新しいスレッド) で戻ったときに何かを行うように割り当てます。

于 2013-09-18T21:45:13.417 に答える