【问题标题】:Form submit Ajax using jQuery sometimes does not works使用 jQuery 提交 Ajax 表单有时不起作用
【发布时间】:2015-11-27 19:26:01
【问题描述】:

我正在使用 Ajax 和 jQuery 提交表单数据。 当我在弹出窗口上提交表单时,我会刷新父页面。 我的代码:

$(document).ready(function() {
    $("#frm_addSpeedData").submit(function(event) {  
    //event.preventDefault();
    $.ajax({
         type: "POST", 
          url: "/webapp/addSpeedDataAction.do", 
          data: $(this).serialize(),
          success: function(data) {
            //console.log("Data: " + data);
            window.opener.location.reload(); 
          }
        });
    });
});

但是页面在回调成功时刷新,但我在父页面上看不到更新。有时我可以看到更新,有时看不到。问题是什么?我还需要知道如何用原生 javascript 编写它并使用 ajax javascript 提交表单。

【问题讨论】:

  • 您是否使用 firebug 调试 ajax 方法调用返回 200 OK ?
  • 是的。返回 200 ok 我可以看到

标签: javascript jquery ajax forms


【解决方案1】:

也许您收到此错误是因为 javascript 是异步的,即使您尚未收到请求的响应,您的代码也会继续执行。

试试这个:

$(document).ready(function() {
        $("#frm_addSpeedData").submit(function(event) {  
        //event.preventDefault();
        $.ajax({
             type: "POST", 
              url: "/webfdms/addSpeedDataAction.do", 
              data: $(this).serialize(),
              async: false, // This will only proceed after getting the response from the ajax request.
              success: function(data) {
                //console.log("Data: " + data);
                window.opener.location.reload(); 
              }
            });
        });
    });

【讨论】:

  • 但是我可以看到页面正在刷新。这意味着ajax调用已经成功。是还是不是?
  • 问题是:假设您有一个验证,如果字段“X”是数据库中的唯一值。当您运行 AJAX 来验证这一点时,您必须从数据库中获取数据,然后验证它是否唯一。如果请求需要很长时间,它可能会在不验证字段的情况下继续提交。如果我不清楚,请告诉我。在此示例中,我无法复制错误,因此对我来说更难。
  • 有什么问题?
  • 取消注释这部分 event.preventDefault();你必须阻止提交函数的默认行为,否则使用ajax没有乐趣。
  • @psylogic 它的作用是什么?
猜你喜欢
  • 2015-07-29
  • 2011-02-12
  • 2018-10-25
  • 2020-10-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-11-18
  • 1970-01-01
相关资源
最近更新 更多