1

在 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";
   }
}

$(document).ajaxError根据此处的示例,我已将全局错误处理程序附加到解析代码

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

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

4

1 回答 1

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();
});

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

于 2013-06-03T06:44:36.170 回答