JQuery提交表单和输出响应或错误消息

时间:2010-05-19 20:41:45

标签: javascript jquery ajax jquery-forms-plugin

我想提交表格并显示有关结果的信息。 update_recordsalert_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"使执行同步(是否正确?)

我还尝试在以下两行之间插入延迟:

$('#' + 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);
  }

2 个答案:

答案 0 :(得分:0)

ajaxSubmit的AJAX调用是异步的 - 这意味着AJAX请求是通常的程序执行乱序,并且在你的程序中意味着在this.alert_message = message;有机会执行之前调用警报。执行顺序是:

  1. 致电update_records()
  2. 制作ajaxSubmit AJAX请求,记得执行回调函数,但现在不执行
  3. 致电alert(options.alert_message)
  4. 当ajaxSubit请求返回数据时,执行回调函数(即设置this.alert_message变量)
  5. 要让警报显示正确的值,请将使用AJAX返回数据的代码(alert())移动到success()函数 - 即成功函数的用途。

答案 1 :(得分: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);

  }