2012-04-12 4 views
0

Guten Abend alle!Ajax Anrufe in IE8 zeigt nicht alle Daten, Works in Firefox und IE9

Ich habe einen Ajax-Aufruf, der 5 'Echo' von einem PHP-Skript in ein div lädt. Das erste Echo erstellt ein verborgenes Formularfeld mit einer ID als Wert. der Rest sind oberflächlich und haben Links, um das div um die Seite zu bewegen.

In Firefox, die vollständigen Daten geladen werden, aber in IE, vermisst es das erste Echo, um nur die anderen Details anzuzeigen. Ich vermisse das versteckte Element, das ich als Identifikator benötige.

//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'>"; 

Wie auf der Erde kann IE verpassen selektiv eine Reihe von PHP ?! Es gibt absolut kein HTML für ein verstecktes Feld. Noch. Dies passiert nicht jedes Mal. Diese Funktion wird bis zu 25 mal für 25 verschiedene DIVs aufgerufen, und es wird funktionieren, einen Fehler in IE zu treffen.

Checked es in einem Formular etc .. keine Ahnung, was los ist!

Beispielquelle folgenden 3 Aufrufe davon in IE 8 :: Überprüfen Sie die 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> 

Nach der Überprüfung Syntax wie empfohlen ::

<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(); 


} 

jetzt nach Hause kommen und mit IE9 und es funktioniert gut, zumindest das nur IE8, dass sein geschehen auf , aber ich kann IE8 auf einem Windows 7 PC sogar im Kompatibilitätsmodus nicht installieren, so kurz, um virtualbox heraus zu bekommen, ich muss morgen debuggen fortsetzen.

+0

Können Sie das Javascript posten? – Snuffleupagus

+0

Wenn Sie einen Haltepunkt unter 'document.getElementById (elemin) .innerHTML = xmlhttp.responseText; 'setzen, enthält der responseText die Eingabezeile? – Snuffleupagus

+1

das versteckte Eingabefeld scheint keine ID oder einen Namen zu haben. ist das absichtlich? – Spudley

Antwort

0

Vielen Dank für all Ihre Hilfe und Beratung zu diesem Thema. Das Problem scheint, geführt mit dem cPanel Hosting-Konto, das ich habe. Der Server hatte Probleme unter Last. Meine eigene Schuld für Shared Hosting! Prost!

0

Nur ein Gedanke, erhalten Sie Ihre Syntax genau und fügen Sie den Trailling Slash:

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

IE kann irgendwann ein Weibchen sein. Aber ich würde nicht verstehen, warum nur der erste entkleidet würde.

+0

Der IE f12 Debugger verbirgt trailing Schrägstriche ... Es ist aber jetzt nach der Bearbeitung. Prost für deine Eingabe! – TechnicalChaos

0

in Ihrer Funktion jQuery Ajax versuchen, die Option Cache-Einstellung: ‚false‘

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

oder Sie können einige zufällige Zeitvariable an die URL anhängen, wird diese IE verleiten die Seite zu denken ist neu und gewann‘ t verwende die zwischengespeicherte Version.

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

this helps ... edit: völlig die Frage falsch verstanden .. dachte, es war IE die Ajax-Aufrufe Cachen;)

+0

Prost Dale, ich habe Caching deaktiviert für meine Browsersitzung sowieso während der Codierung. großartige Idee, es ist etwas, das ich umsetzen werde. – TechnicalChaos

0

Nur ein Gedanke, versuchen Sie die Variablen innerhalb des ersten Echos in geschweiften erklärt Einwickeln Klammern:

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

Ich dachte entlang der Linien der Isolierung sie von den Metazeichen.

+0

Wird dies versuchen, wenn ich wieder auf einem XP-Rechner mit IE8 bin. Vielen Dank! – TechnicalChaos

Verwandte Themen