簡體   English   中英

IE8中的Ajax調用未顯示所有數據,在Firefox和IE9中均有效

[英]Ajax calls in IE8 not showing all data, Works in firefox and IE9

大家晚上好!

我有一個Ajax調用,它從php腳本加載5個“ echo”到div中。 第一個回顯將創建一個隱藏的表單字段,其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%' />

IE有時會是個bit子。 但是我不明白為什么只刪除第一個。

在您的jQuery ajax函數中嘗試設置選項緩存:'false'

$.ajax({
    url: 'blah.php',
    type: 'post',
    cache: 'false'
});

或者您可以將一些隨機時間變量附加到url,這將使IE誤以為該頁面是新頁面,並且不會使用緩存版本。

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

希望這對您有幫助...編輯:完全誤解了問題..認為這是IE緩存ajax調用;)

只是想一想,請嘗試使用大括號將在第一個回顯中聲明的變量包裝起來:

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

我在考慮將它們與元字符分離的思路。

感謝您在此方面的所有幫助和建議。 這個問題似乎是由我擁有的cPanel托管帳戶導致的。 服務器負載有問題。 我自己對共享主機的錯! 干杯!

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM