文档章节

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

流光韶逝
 流光韶逝
发布于 2016/06/11 17:29
字数 532
阅读 18
收藏 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
博文 97
码字总数 126606
作品 0
济南
程序员
帮助你高效开发Ajax应用的超酷jQuery插件 - AjaxML

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

gbin1
2012/04/24
0
0
jquery.Jcrop中解决jQuery不支持$.browser的办法

在使用jquery.Jcrop的过程中,出现: TypeError: $.browser is undefined opt.trackDocument = $.browser.msie ? false : true; 由于使用的是jquery-1.11.2.min.js,不支持browser对象。 解决......

40岁的青春
2015/04/07
0
0
关于Firefox中jQuery.ajax()返回Xml Document

使用IE等其他浏览器调用jquery的ajax()方法总能返回期待的值。 但是使用Firefox再调用此方法就返回Xml Document。即: jQuery.ajax(),(等同$.ajax()),在firefox中虽然设置属性dateType:...

Eric_HSBC
2013/01/22
0
0
分享一款jQuery的UI插件:Ninja UI

日期:2011/12/26 来源:GBin1.com 在线演示 本地下载 今天分享一款jQuery的UI插件 - Ninja UI, 这个插件使用jQuery本身的语法来开发界面元素,而且你不需要关注CSS样式相关设定,因为整个C...

gbin1
2011/12/26
0
0
jquery easyUI1.3.3在IE9和火狐上面的兼容问题

针对jquery easyUI 1.3.3 在火狐和chrome上可以运行,在IE9中没有效果,但是也不报错的问题。 jquery easyUI 1.3.3中的jquery是2.x版本的,在IE9中不兼容,把其中的jquery文件换成1.x版本的就...

qjf_Troy
2013/11/21
0
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

文件的压缩与解压(linux)

Linux下*.tar.gz文件解压缩命令 1.压缩命令:   命令格式:tar -zcvf 压缩后文件名.tar.gz 被压缩文件名 可先切换到当前目录下。压缩文件名和被压缩文件名都可加入路径。 2.解压缩命令: ...

qimh
27分钟前
1
0
invalid character found in the request target 异常

这个异常时因为Tomcat 9不支持请求格式出现“{”等非法字符的问题 因为tomcat版本问题遇到的坑,记录一下。 问题 今天由于要测试一下订单详情页的异步查询,在本地起了一个服务,发送的请求是...

edwardGe
31分钟前
3
0
发现抓包软件fiddler的bug

1个请求他跳转之后,直接400,被拦在了Apache,使用fiddler 的,replay requests 是同样的结果,但是replay composer确是正常的。 也就是说这replay requests 是发原来的包,replay composer...

NLGBZJ
41分钟前
1
0
linux screen 命令详解

shell关闭后, 主机仍然运行 screen命令 启动jenkins以后, screen, 然后按ctrl+a 再按d 这样暂停了子界面, 这时候回到了父界面 用screen –ls查看目前子界面的状态 [root@free /]# screen -l...

SuShine
42分钟前
2
0
mac机器切换无线网络导致网页不能打开的问题

问题: 公司和家里使用不同的WI-FI,每次从家到公司时自动切换网络后,公司的许多地址不能访问, ping域名是可以ping同的,但是网页却打不开... 问题分析: 初步猜想是DNS缓存的问题? 对于MAC系统没...

Lennie002
45分钟前
1
0

没有更多内容

加载失败,请刷新页面

加载更多

下一页

返回顶部
顶部