0

こんばんは!

phpスクリプトからdivに5'エコー'をロードするAjax呼び出しがあります。最初のエコーは、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では失敗しても機能します。

フォームなどの内部を確認しました。何が起こっているのかわかりません。

IE8でこれを3回呼び出した後のソースの例::Div03HTMLを確認してください。

<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をリリースする前に、明日デバッグを続ける必要があります。 。

4

4 に答える 4

0

考えてみてください。構文を正確に取得し、末尾にスラッシュを追加してください。

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

IEはいつか雌犬になることができます。しかし、なぜ最初のものだけが削除されるのか理解できません。

于 2012-04-12T18:42:45.407 に答える
0

jQuery ajax関数で、オプションキャッシュを設定してみてください:'false'

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

または、URLにランダムな時間変数を追加することもできます。これにより、IEはページが新しく、キャッシュされたバージョンを使用しないと思い込ませます。

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

これがお役に立てば幸いです...編集:質問を完全に誤解しました..それはIEがajax呼び出しをキャッシュしていると考えました;)

于 2012-04-12T18:43:11.833 に答える
0

考えてみてください。最初のエコー内で宣言された変数を中括弧で囲んでみてください。

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

私はそれらをメタチャーから分離するという方針に沿って考えていました。

于 2012-04-12T19:03:46.613 に答える
0

これに関するすべてのあなたの助けとアドバイスに感謝します。私が持っているcPanelホスティングアカウントに起因する問題のようです。サーバーに負荷がかかっているときに問題が発生していました。共有ホスティングに行くことに対する私自身の責任!乾杯!

于 2012-04-13T16:06:40.073 に答える