先看代码:
页面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');
也有可能只要以上语句中的一句就可以了,有兴趣的童鞋可以一试。
希望以上方法对大家在实际工作中有用!