文档章节

firefox和chrome中 JQuery的ajax组件执行差异

流光韶逝
 流光韶逝
发布于 2016/06/11 17:29
字数 532
阅读 29
收藏 0

最近做项目,发现了一个有意思的问题,自己解决不了,然后找别人一块想,已解决; 问题为:一个post请求,在chrome正常执行;在firefox中无法执行(不报错,只是请求失败,后台接受不到); 原代码如下:

function addCustom(o) {
	var qy = o[0]["value"];// regionId
	qy = qy.replace(" ", "");
	var glxs = o[1]["value"];//
	var km_ratio = o[2]["value"];
	if (km_ratio == "") {
		alert("请设置扣罚系数");
		return;
	} else if (qy == "") {
		alert("请设置扣罚区域");
		return;
	}
	if (jQuery.inArray(qy, regionArr) > -1) {
		alert("请勿重复添加自定义区域!");
	} else if (qy.length > 5 && qy.length < 8) {
		var num = (qy + "").substring(4);
		if (num != '00') {
			oilForm(km_ratio, qy);// 执行添加
		} else {
			alert("请选择县级区域!!");
		}
	} else {
		alert("请选择县级区域!!");		
	}
       location.href = '/monthTask/punish';
}
/*
* 添加自定义扣罚系数区域
*/
function oilForm(km_ratio, qy) {
	var newPunish = {
		"regionId" : qy,
		"rate" : km_ratio
	}
	// 发送请求
	$.ajax({
		url : 'monthTask/punish',// 添加公里系数设置区域
		type : 'post',
		data : newPunish,
		dataType : "json",
		success : function(result) {
			alert("已成功添加");
			location.href = '/monthTask/punish';
		},
		error : function(data) {
			if (500 == data.status) {
				alert("系统异常,请稍后重试!");
			} else {
				location.href = '/monthTask/punish';
			}
		}
	});

}
  • 分析:当执行addCustom方法,并执行到oilForm方法时,oilForm执行ajax方法,firefox没有等到ajax请求执行完,就执行了页面跳转操作;
  • 相关原理:chrome将ajax作为一般进程处理,而firefox将ajax作为后台进程(daemon Thread)处理;
  • 解决方案:在ajax请求之后不要进行其他的业务操作;将所有的相关逻辑都写进ajax里; 修改后的addCustom方法
function addCustom(o) {
	var qy = o[0]["value"];// regionId
	qy = qy.replace(" ", "");
	var glxs = o[1]["value"];//
	var km_ratio = o[2]["value"];
	if (km_ratio == "") {
		alert("请设置扣罚系数");
		return;
	} else if (qy == "") {
		alert("请设置扣罚区域");
		return;
	}
	if (jQuery.inArray(qy, regionArr) > -1) {
		alert("请勿重复添加自定义区域!");
	} else if (qy.length > 5 && qy.length < 8) {
		var num = (qy + "").substring(4);
		if (num != '00') {
			oilForm(km_ratio, qy);// 执行添加
		} else {
			alert("请选择县级区域!!");
			location.href = '/monthTask/punish';
		}
	} else {
		alert("请选择县级区域!!");
		location.href = '/monthTask/punish';
	}

}

现在,当方法中执行到ajax请求时,其后面没有任何逻辑操作;问题就解决了.

© 著作权归作者所有

共有 人打赏支持
流光韶逝
粉丝 19
博文 100
码字总数 126946
作品 0
济南
程序员
私信 提问
$.ajax 在本地ie可以,但上传到服务器后firefox/chrome都可以,ie却不行

如题,jquery的异步调用方法$.ajax 在本地ie、firefox、chrome都可以,但把代码更新到服务器后,firefox和chrome正常,但是ie不正常,我的ie版本为ie9。代码如下: $.ajax({ type: "POST", u...

山海经
2014/04/21
1K
11
关于ajax异步请求因缓存导致数据错乱的问题

后台环境:jfinal2.2 前台环境:左侧导航菜单,右侧main div的内容通过点击左侧菜单用ajax异步加载。采用浏览器cookie记录跟踪登录用户。ajax采用jquery的$.ajax方式,参数:type: "POST",as...

Jekey
2016/07/03
1K
1
jQuery. ajax 回调函数 在IE下可以,在firefox, chrome 下失败。

ajax 请求在 IE 下能执行回调函数,在firefox 与 chrome 下不能。 用firebug 抓取到错误是 jquery-1.8.3.js (第 8976 行) xhr.send((s.hasContent && s.data) || null);...

LucEsape
2013/01/12
3.5K
5
帮助你高效开发Ajax应用的超酷jQuery插件 - AjaxML

日期:2012-4-20 来源:GBin1.com 如果你使用jQuery进行Ajax开发的话,你一定要试试今天我们这里介绍的这一款jQuery插件 - AjaxML。它是一款能够帮助你提高ajax开发效率的辅助插件,能够将你...

gbin1
2012/04/24
0
0
jQuery的ajax兼容问题

在chrome和firefox下,在ajax的异步请求未返回时点击其他跳转页面的菜单或按钮,此条ajax异步请求返回时进入error方法 (通过现象分析的,不一定是他真正的原因。。。)。这个问题在ie系列就...

BIG-BUG
2016/04/28
496
3

没有更多内容

加载失败,请刷新页面

加载更多

开始看《Java学习笔记》

虽然书买了很久,但一直没看。这其中也写过一些Java程序,但都是基于IDE的帮助和对C#的理解来写的,感觉不踏实。 林信良的书写得蛮好的,能够帮助打好基础,看得出作者是比较用心的。 第1章概...

max佩恩
昨天
9
0
Redux 三大原则

1.单一数据源 在传统的MVC架构中,我们可以根据需要创建无数个Model,而Model之间可以互相监听、触发事件甚至循环或嵌套触发事件,这些在Redux中都是不被允许的。 因为在Redux的思想里,一个...

wenxingjun
昨天
6
0
跟我学Spring Cloud(Finchley版)-12-微服务容错三板斧

至此,我们已实现服务发现、负载均衡,同时,使用Feign也实现了良好的远程调用——我们的代码是可读、可维护的。理论上,我们现在已经能构建一个不错的分布式应用了,但微服务之间是通过网络...

周立_ITMuch
昨天
4
0
XML

学习目标  能够说出XML的作用  能够编写XML文档声明  能够编写符合语法的XML  能够通过DTD约束编写XML文档  能够通过Schema约束编写XML文档  能够通过Dom4j解析XML文档 第1章 xm...

stars永恒
昨天
2
0
RabbitMQ学习(2)

1. 生产者客户端 void basicPublish(String exchange, String routingKey, boolean mandatory, boolean immediate, BasicProperties props, byte[] body) 1. 在生产者客户端发送消息时,首先......

江左煤郎
昨天
4
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部