0

フォームを送信し、結果に関するメッセージを表示したい。 エラーメッセージにupdate_records初期化します。alert_message成功した場合、その値が変更されることを期待しています。メッセージupdate_recordsを出力します。ただし、関数は常に「フォームの送信エラー」を警告します。これの何が問題なのですか?

コードは次のとおりです。

  function update_records(form_name) {
    var options = {
      async: false,
      alert_message: "Error submitting form",
      success: function(message) {
        this.alert_message = message;
      }
    };
    $('#' + form_name).ajaxSubmit(options);
    alert(options.alert_message);
  }

私はJavascript/JSON/Jqueryの初心者であり、言及された技術のいくつかの基本を誤解していると思われます.

アップデート:

実行を同期させるように指定"async:false"しました(正しいですか?)

また、次の 2 行の間に遅延を挿入しようとしました。

$('#' + form_name).ajaxSubmit(options);
pausecomp(1000); // inserted pause
alert(options.alert_message);

また、問題は解決しません。次のコードpousecomp:

  function pausecomp(millis)
  {
    var date = new Date();
    var curDate = null;
    do { curDate = new Date(); }
    while(curDate-date < millis);
  }
4

2 に答える 2

0

ajaxSubmit の AJAX 呼び出しは非同期です。これは、AJAX 要求が通常のプログラム実行の順不同で行われることを意味し、プログラムでは、アラートがthis.alert_message = message;実行される前に呼び出されることを意味します。実行順序は次のとおりです。

  1. 電話update_records()
  2. ajaxSubmit AJAX リクエストを作成します。コールバック関数を実行することを忘れないでください。ただし、今は実行しないでください。
  3. に電話するalert(options.alert_message)
  4. ajaxSubit リクエストがデータを返したら、コールバック関数を実行します (これはthis.alert_message変数を設定するためのものです) 。

アラートに正しい値を表示させるには、AJAX の戻りデータ ( alert()) を利用するコードを関数に移動しますsuccess()。これは、success 関数の目的です。

于 2010-05-19T20:50:02.553 に答える
0
 $('#' + form_name).ajaxSubmit(options);

AJAX の頭字語はこの呼び出しが非同期であることを示唆しているためalert(options.alert_message); 、成功コールバックが呼び出される前に呼び出されるため、ajax 呼び出しが正常に完了する可能性がありますが、常にエラー メッセージを含むアラートが表示されます。代わりに次のようなことを試すことができます。

 function update_records(form_name) {

    var options = {
      async: false,
      alert_message: "Error submitting form",
      success: function(message) {
        alert(message);
      },
      error : function(){
        alert(this.alert_message);
      }
    };
    $('#' + form_name).ajaxSubmit(options);

  }
于 2010-05-19T20:53:22.327 に答える