搞了N天,没有解决,所幸,这个错误并不影响网站文章的评论,虽然提示这个错误,但是网站的文章仍然可以评论,但是在IE下面那个黄色的小图标实在是太难看了,一定要把他解决。
网上有人讲是没有判定状态,即:
if(xmlhttp.readyState == 4)
{
if(xmlhttp.status == 200)
{
但我所在的程序的确是判定了的,也有人说是JS版本太高不稳定所致。改成他们那样还是不能解决问题。
后来又怀疑自己的判定状态的if写得太复杂了,可能在特定情况下会出错,仔细研究了所写的if语句,也没有发现逻辑上的错误。
后来通过对比分析没有出错的支持/反对功能的Ajax脚本,心里一阵狂喜,肯定是这里了!!
问题出错在于:在判定状态之前取得了返回的数据。
问题代码的错误部份(仅写出出错的部份代码)
............前面略掉一些代码
xmlhttp.open("POST",URL,true);
xmlhttp.setRequestHeader("cache-control","no-cache");
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//xmlhttp.send(datapost);
xmlhttp.onreadystatechange = function()
{
//alert(xmlhttp.responseText);
var ReData = xmlhttp.responseText; //配合viewtop.asp的BbsCode()函数
if(xmlhttp.readyState == 4)
{
if(xmlhttp.status == 200)
{
DIVID.innerHTML = BbsCode(ReData);
..............后面略掉一些代码。
下面是正确的代码(请注意红色部份的位置)
xmlhttp.open("POST",URL,true);
xmlhttp.setRequestHeader("cache-control","no-cache");
xmlhttp.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
//xmlhttp.send(datapost);
xmlhttp.onreadystatechange = function()
{
//alert(xmlhttp.responseText);
if(xmlhttp.readyState == 4)
{
if(xmlhttp.status == 200)
{ var ReData = xmlhttp.responseText; //配合viewtop.asp的BbsCode()函数
DIVID.innerHTML = BbsCode(ReData);
...................
Ajax必需先判定正确的状态后才取回返回的数据。希望对正有此难题的朋友有用!