基于jquery中的全局错误阻止提交

时间:2013-06-02 12:09:33

标签: jquery error-handling

in html:

<form action="next.html">
   <!-- tags here -->
   <button id="prev">Prev</button>
   <button id="next">Next</button>
</form>

在Javascript中:

$("form").submit (function(e) {
    e.preventDefault();
    if (e.originalEvent.explicitOriginalTarget.id == "next") {
        doPostData();
        // window.location = "next.html";
   } 
   else if (e.originalEvent.explicitOriginalTarget.id == "prev") {
        window.location = "prev.html";
   }
}

我已根据示例here

将全局错误处理程序附加到$(document).ajaxError解析代码

doPostData()基本上向服务器发送POST请求。如果成功,一切都很好,但是当我收到错误时,我不知道如何阻止表单提交。错误闪烁,浏览器重定向到“下一页”。

我怎样才能优雅地解决这个问题?

1 个答案:

答案 0 :(得分:0)

为了后代,我终于弄清楚出了什么问题:

错误处理程序正确启动但重定向到下一页仍然发生,因为仍有window.location = "next.html"可用。与从上面代码中的window.location行删除评论类似。

基本设置,考虑到上述代码仅适用于FireFox(不适用于Chrome或Safari):

$(document).ajaxError(genericAjaxErrorHandler);

$("#prev").click(function() {
  window.location = "prev.html";
});

$("#next").click(function() {
  doPostData();
});

function doPostData() {
  // actions here

  if (allIsOk) {
      window.location = 'next.html';
  }
}

我添加了

$('form').submit( function(e) {
  e.preventDefault();
});

可以肯定,但可能没有必要。