Php IE8中的Ajax调用不显示所有数据,在firefox和IE9中工作

Php IE8中的Ajax调用不显示所有数据,在firefox和IE9中工作,php,javascript,ajax,firefox,internet-explorer-8,Php,Javascript,Ajax,Firefox,Internet Explorer 8,大家晚上好 我有一个Ajax调用,它将php脚本中的5个“echo”加载到一个div中。 第一个echo创建一个隐藏的表单字段,该字段的值为ID。 其余的都是肤浅的,有链接可以在页面上移动div 在firefox中,加载了完整的数据,但在IE中,它忽略了第一个回声,只显示了其他细节。我缺少作为标识符所需的隐藏元素 //Some other PHP code..... the * and % in the value are delimiters for splitting a string l

大家晚上好

我有一个Ajax调用,它将php脚本中的5个“echo”加载到一个div中。 第一个echo创建一个隐藏的表单字段,该字段的值为ID。 其余的都是肤浅的,有链接可以在页面上移动div

在firefox中,加载了完整的数据,但在IE中,它忽略了第一个回声,只显示了其他细节。我缺少作为标识符所需的隐藏元素

//Some other PHP code.....  the * and % in the value are delimiters for splitting a string later.

echo "<input type='hidden' value='*$substept,$subscon%'>";
echo "<a href='javascript:remcol($part)'>.-.</a>".$substept . "<a href='javascript:paddcolumn($part)'>.+.</a> <br> <a href='javascript:mleft($part)'><<</a>" . $subscon . "<a href='javascript:mright($part)'>>></a>";
echo "<br>Column title <br><input type='text' id='title' size = '10'>";
echo "<br>Column width ";
echo "<br><input type='text' id='tb' size = '10'>";
IE怎么会有选择地漏掉一行php?!隐藏字段绝对没有html。 然而 这并不是每次都会发生。对于25个不同的div,此函数最多被调用25次,并且在IE中它可以正常工作

检查了它的内部表格等。。不知道发生了什么事

IE 8中的3个调用的示例源代码::检查Div 03 HTML

<DIV style="BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid" id=o1>productspgroup<INPUT value=*products,pgroup% type=hidden><A href="javascript:remcol(1)">.-.</A>products<A href="javascript:paddcolumn(1)">.+.</A> <BR><A href="javascript:mleft(1)">&lt;&lt;</A>pgroup<A href="javascript:mright(1)">&gt;&gt;</A><BR>Column title <BR><INPUT id=title size=10><BR>Column width <BR><INPUT id=tb size=10></DIV>
<DIV style="BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid" id=o2>customerphone1<INPUT value=*customer,phone1% type=hidden><A href="javascript:remcol(2)">.-.</A>customer<A href="javascript:paddcolumn(2)">.+.</A> <BR><A href="javascript:mleft(2)">&lt;&lt;</A>phone1<A href="javascript:mright(2)">&gt;&gt;</A><BR>Column title <BR><INPUT id=title size=10><BR>Column width <BR><INPUT id=tb size=10></DIV>
<DIV style="BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid" id=o3><A href="javascript:remcol(3)">.-.</A>products<A href="javascript:paddcolumn(3)">.+.</A> <BR><A href="javascript:mleft(3)">&lt;&lt;</A>price<A href="javascript:mright(3)">&gt;&gt;</A><BR>Column title <BR><INPUT id=title size=10><BR>Column width <BR><INPUT id=tb size=10></DIV>
<DIV id=o4></DIV>
<DIV id=o5></DIV>
<DIV id=o6></DIV>
按照建议检查语法后::

<DIV style="BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid" id=o1><A href="javascript:remcol(1)">.-.</A> customer <A href="javascript:paddcolumn(1)">.+.</A> <BR><A href="javascript:mleft(1)">&lt;&lt;</A>surname<A href="javascript:mright(1)">&gt;&gt;</A><BR>Column title <BR><INPUT id=title size=10><BR>Column width <BR><INPUT id=tb size=10></DIV>
<DIV style="BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid" id=o2><INPUT value=*customer,email% type=hidden><A href="javascript:remcol(2)">.-.</A>customer<A href="javascript:paddcolumn(2)">.+.</A> <BR><A href="javascript:mleft(2)">&lt;&lt;</A>email<A href="javascript:mright(2)">&gt;&gt;</A><BR>Column title <BR><INPUT id=title size=10><BR>Column width <BR><INPUT id=tb size=10></DIV>
<DIV style="BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid" id=o3><INPUT value=*customer,email% type=hidden><A href="javascript:remcol(3)">.-.</A>customer<A href="javascript:paddcolumn(3)">.+.</A> <BR><A href="javascript:mleft(3)">&lt;&lt;</A>email<A href="javascript:mright(3)">&gt;&gt;</A><BR>Column title <BR><INPUT id=title size=10><BR>Column width <BR><INPUT id=tb size=10></DIV>
<DIV style="BORDER-BOTTOM: #000 1px solid; BORDER-LEFT: #000 1px solid; BORDER-TOP: #000 1px solid; BORDER-RIGHT: #000 1px solid" id=o4><INPUT value=*customer,email% type=hidden><A href="javascript:remcol(4)">.-.</A>customer<A href="javascript:paddcolumn(4)">.+.</A> <BR><A href="javascript:mleft(4)">&lt;&lt;</A>email<A href="javascript:mright(4)">&gt;&gt;</A><BR>Column title <BR><INPUT id=title size=10><BR>Column width <BR><INPUT id=tb size=10></DIV>
<DIV id=o5></DIV>
Javascript:

function choosedata(cin){

cot = "so"+cin;
var strr="main.php?func=21&part=" + cin + "&step=" + counter[cin] + "&subs=";
colchange = 'o' + cin;
if (counter[cin] >=2){
strr = strr + document.getElementById(cot).value;
}

callajaxd(strr, colchange);
counter[cin]++;

}


function callajaxd(str,elemin)   //URL String, Box to go in
{
if (str=="")
{
document.getElementById(elemin).innerHTML="";
var back = "";
return;
}

if (window.XMLHttpRequest)
{// code for IE7+, Firefox, Chrome, Opera, Safari
xmlhttp=new XMLHttpRequest();
} 
else
{// code for IE6, IE5
xmlhttp=new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.onreadystatechange=function()
{
document.getElementById(elemin).innerHTML="<img src='loading.gif' />";
if (xmlhttp.readyState==4 && xmlhttp.status==200)
  {
 document.getElementById(elemin).innerHTML = xmlhttp.responseText;
 } 



}
xmlhttp.open("GET",str,true);
xmlhttp.send();


}

现在回到家里,使用IE9,它工作得很好,至少它是唯一的IE8,但我不能在windows 7 pc上安装IE8,即使是在兼容模式下,所以除了推出virtualbox,我明天还必须继续调试

想一想,把你的语法准确点,加上拖尾斜杠:

<input type='hidden' value='*$substept,$subscon%' />

我有时会成为一个婊子。但是我不明白为什么只有第一个会被剥离。

在jQuery ajax函数中,尝试设置选项cache:'false'

$.ajax({
    url: 'blah.php',
    type: 'post',
    cache: 'false'
});
或者你可以在url中附加一些随机的时间变量,这会诱使IE认为页面是新的,不会使用缓存版本

$.ajax({
    url: 'blah.php?foo=<?php echo time(); ?>'
});

希望这有助于。。。编辑:完全误解了这个问题。。我想是IE缓存了ajax调用

想一想,尝试将第一个echo中声明的变量用大括号括起来:

echo "<input type='hidden' value='*{$substept},{$subscon}%' />";

我一直在考虑将它们从元字符中分离出来。

谢谢你在这方面的帮助和建议。 这个问题似乎是由我的cPanel托管帐户引起的。服务器在加载时出现问题。 我自己的错去共享主机!
干杯

如果您在document.getElementByIdelemin.innerHTML=xmlhttp.responseText;responseText是否包含输入行?隐藏的输入字段似乎没有id或名称。这是故意的吗?是的,隐藏字段不需要DOM直接调用。将在几分钟内中断并更新您。IE f12调试器隐藏尾部斜杠。。。不过,在编辑之后,它现在就在那里了。为你的投入干杯!谢谢Dale,我在编码时已经禁用了浏览会话的缓存。好主意,这是我将要实现的。当我回到一台装有IE8的XP机器上时,我会试试这个。谢谢