现在的位置: 首页 > 综合 > 正文

jquery ajax post提交成功后回调函数不执行(IE环境下)

2012年02月25日 ⁄ 综合 ⁄ 共 986字 ⁄ 字号 评论关闭

先看代码:

页面ajax post 提交代码

$.post('goods_quickadd.php?action=update', 
	{	goods_code : $('#goods_code1').val(),
		goods_name : $('#goods_name1').val(),
		cat	 : $('#cat1').val(),
		pid	 : pid,
		weight	 : $('#weight').val(),
		rand	 : Math.random() },
	function(data){
		if(data == 1)
			alert('更新失败');
		else
		{
			$('#title_' + pid).text($('#goods_code1').val() + ' ' + $('#goods_name1').val());
			$('#cat_' + pid).text($('#cat1').find("option:selected").text());
		}
		$.fancybox.close();
	})

post提交页面后台处理代码:主要是数据库操作,依数据库操作结果返回0(成功)或1(失败)

if($db->query($sql))
	echo 0;
else
	echo 1;
exit;

以上代码在Firefox执行正常,但在ie6,ie8下执行时前台页面无变化。检查后发现后台页面执行正常(数据库操作已执行)。也就是说IE中回调函数不执行。

笔者ajax调用也用了一两年,大多数使用的是get方法,get方法从未发生过这种事情。原想改为get方法试试,后又放弃了。因为在ecshop的二次开发中也碰到过类似的问题,也一直未找到真正的原因。

经多次调试,最终发现在后台页面加上如下代码,则IE中回调函数可执行(PHP)。

	header('Content-Type:text/html; charset=utf-8');
	header('Expires: Thu, 01 Jan 1970 00:00:01 GMT');
	header('Last-Modified: ' . gmdate('D, d M Y H:i:s') . ' GMT');
	header('Cache-Control: no-cache, must-revalidate, max-age=0');
	header('Pragma: no-cache');	

也有可能只要以上语句中的一句就可以了,有兴趣的童鞋可以一试。

希望以上方法对大家在实际工作中有用!

抱歉!评论已关闭.