我公司有一个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);
}
}
请问这是什么原因?如解决? 先谢谢大家了。
其他浏览器的title不如ie支持的那么好,但其实也有,个人推荐写一个jq监听 $(document).on('mouseover','*[title]'.function(){自定义浮动层显示title内的信息})
$(document).on('mouseover','*[title]',function(){
$(this).css('position','relative');
var title = $(this).attr('title');
var el = $(title);
el.appendTo($(this));
//el.css({自行计算位置信息})
el.fadeToggle(5000).remove();
})
您好,我是有问必答小助手,您的问题已经有小伙伴解答了,您看下是否解决,可以追评进行沟通哦~
如果有您比较满意的答案 / 帮您提供解决思路的答案,可以点击【采纳】按钮,给回答的小伙伴一些鼓励哦~~
ps:问答VIP仅需29元,即可享受5次/月 有问必答服务,了解详情>>>https://vip.csdn.net/askvip?utm_source=1146287632
onreadyStatechange要在send之前