我有一个用Javascript编写的100%有效的Ajax模型,我使用的是一些输入,Get或Post方法,要与之通信的页面,要发送到该页面的字符串以及我自己页面上的哪个元素我可能是在收到我的回复时摆弄。 问题是,如果我将请求设置为异步(因此是Ajax),IE会在onreadystatechange事件中返回错误“必须完成此操作的数据”,其中我所做的就是检查readystate是否为4并且状态是200.由于Ajax是异步的,我在Firefox或Chrome中没有出现错误。
来自Post方法的片段
xmlhttp.open("POST", commPage, true);
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded; charset=UTF-8");
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
j = xmlhttp.responseText;
i.innerHTML = j;
}
}
xmlhttp.send(str);
编辑:我应该指出,在IE中,我正在使用ActiveX控件 - > Msxml2.XMLHTTP或Microsoft.XMLHTTP或者先返回true。
答案 0 :(得分:1)
何哼哼
在onreadystatechange函数之外,我调用了responsetext来检查它是否存在,但是如果它还不存在那么你就不能这样做,所以我只需重组一些thigs。一切都还可以,但这是导致问题的脚本
ajaxRequest(){
[...]
}
if(xmlhttp.responseText){
myFunc();
}
答案 1 :(得分:0)
一旦我遇到了这个错误,我解决它配置超时!也许你可以尝试同样的事情!
干杯
答案 2 :(得分:-1)
不确定这是不是你的情况,但我一直在努力解决这个错误三个小时,直到我发现问题为止。 Web服务类没有使用ScriptService属性进行修饰,该属性允许从客户端脚本调用方法!我不会责怪IE,因为IE只是严格的错误并报告其他浏览器忽略的一切。 IE很适合调试。希望这可以帮助。嗯...可能不是你,因为你的帖子现在很老了。