我公司有一个WEB系统,之前一直只能使用IE浏览器,现在IE很快就不能用了,准备改一下代码,让它能在 chrome,edge这些浏览器上也可以使用。现在出现一个问题,以前选择一个货品后,把鼠标放在单价的显示框内,会弹出销售单价,成本等这些内容的框(如下图),现在使用非IE类的浏览器就不显示。
下面是我的ajax的代码:
function ajaxtxmlhttp() {
var xmlhttp;
try { xmlhttp=new ActiveXObject("Msxml2.XMLHTTP");}
catch (e) { try { xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");} catch (E) { xmlhttp=false;}}
if (!xmlhttp && typeof XMLHttpRequest!='undefined') {try { xmlhttp = new XMLHttpRequest();} catch (e) {xmlhttp=false;}}
if (!xmlhttp && window.createRequest) {try {xmlhttp = window.createRequest();} catch (e) { xmlhttp=false;}}
return xmlhttp;
}
function ajaxtxmlsubmit(opt, poststr, reteval, retalert) {
var xmlhttp=ajaxtxmlhttp();
xmlhttp.open("POST", "chk_ajax.php?opt=" + opt, true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded charset=utf-8");
xmlhttp.send(poststr);
xmlhttp.onreadyStatechange=function() {
if (xmlhttp.readyState==4 && xmlhttp.status==200 && xmlhttp.responseText != "") {
if(retalert) alert(xmlhttp.responseText);
if(reteval) eval(xmlhttp.responseText);
}
}
}
我在浏览器调试里发现是有返回数据的,却不会像使用IE一样弹出。返回数据如下图:
我做了个测试,在xmlhttp.onreadstatchange=function后面加了个 alert("测试"),发现没反应,但在前就会弹信息,感觉是onreadstatchange没触发。
xmlhttp.onreadyStatechange = function() {
alert("测试");
if (xmlhttp.readyState==4 && xmlhttp.status==200) { // && xmlhttp.responseText != ""
if(retalert) alert(xmlhttp.responseText);
if(reteval) window.execScript(xmlhttp.responseText);
}
}
请问这是什么原因?如解决? 先谢谢大家了。