我正在用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中的完全刷新仍在继续。
return false;
我尝试设置async = true,但这似乎不起作用。FireFox只是继续前进,并且不等待后端返回响应。FireFox(在js中)实际上在ajax调用中生成了错误。如上所示,定义了错误函数,当我设置async = true时将触发该函数。
return false是您所需要的,但是,如果在到达该行之前发生JavaScript错误,那么浏览器将继续愉快地执行链接单击或按钮单击事件。
您可以尝试使用try / catch块尝试围绕潜在的问题区域。
或者,您可以尝试以下操作:
e.preventDefault作为处理程序中的第一条语句。这应该可以阻止默认事件的发生,我想您可以提前调用它……我只是没有尝试过。
e.preventDefault
编辑:我还想补充一下ajax错误:处理程序仅捕获来自服务器的错误……例如403或500。您仍应将ajax调用包装在try / catch中。