当前位置:  开发笔记 > 编程语言 > 正文

jQuery的ajax导致FireFox中的整页刷新

如何解决《jQuery的ajax导致FireFox中的整页刷新》经验,为你挑选了2个好方法。

我正在使用jQuery进行ajax调用.在IE 7中,ajax调用工作正常,但FireFox 3在进行此调用时始终会执行整页刷新.ajax调用是POST到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时会触发此错误.



1> tvanfosson..:

你是如何调用AJAX方法的?它可以像取消启动AJAX请求的事件一样简单,如果它也会导致表单上的提交.


添加"return false;" 将导致典型的提交操作被取消.如果它来自文本框,那么您将要将e.preventDefault添加到设置为执行AJAX的keypress(或其他)处理程序的处理程序中.



2> Ben Scheirma..:

return false就是你所需要的,但如果你在点击该行之前发生了javascript错误,那么浏览器将继续愉快地执行链接点击或按钮点击事件.

您可以尝试使用try/catch块尝试环绕潜在问题区域.

或者你可以试试这个:

e.preventDefault作为处理程序中的第一个语句.这应该会阻止默认事件的发生,我想你可以直接调用它......我只是没有尝试过.

编辑:我还想添加ajax错误:处理程序只捕获来自服务器的错误...如403或500.您仍然应该在try/catch中包装ajax调用.

推荐阅读
mobiledu2402851173
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有