小编典典

jQuery的Ajax在FireFox中导致整页刷新

ajax

我正在用jQuery进行ajax调用。Ajax调用在IE 7中可以正常工作,但是FireFox
3在进行此调用时始终会刷新整个页面。Ajax调用正在发布到ASP.NET页面方法。

jQuery是否有问题,还是我只是缺少某些设置?

$.ajax({
  async: false,
  type: "POST",
  url: "Default.aspx/DoSomething",
  data: "{" + parms + "}",
  contentType: "application/json; charset=utf-8",
  dataType: "json",
  cache: false,
  success: function(data) { succesfulPost(data); },
  error: function(XMLHttpRequest, textStatus, errorThrown) { 
    errorPost(textStatus, errorThrown);
  }
});

调用是通过html按钮的onclick事件进行的。我return false;在进行此ajax调用的方法中尝试了
,但是FireFox中的完全刷新仍在继续。

我尝试设置async =
true,但这似乎不起作用。FireFox只是继续前进,并且不等待后端返回响应。FireFox(在js中)实际上在ajax调用中生成了错误。如上所示,定义了错误函数,当我设置async
= true时将触发该函数。


阅读 255

收藏
2020-07-26

共1个答案

小编典典

return false是您所需要的,但是,如果在到达该行之前发生JavaScript错误,那么浏览器将继续愉快地执行链接单击或按钮单击事件。

您可以尝试使用try / catch块尝试围绕潜在的问题区域。

或者,您可以尝试以下操作:

e.preventDefault作为处理程序中的第一条语句。这应该可以阻止默认事件的发生,我想您可以提前调用它……我只是没有尝试过。

编辑:我还想补充一下ajax错误:处理程序仅捕获来自服务器的错误……例如403或500。您仍应将ajax调用包装在try / catch中。

2020-07-26