Hallo zusammen. Ich benötige Hilfe bei einem sehr merkwürdigem Verhalten von IE 7 bei AJAX Responses.
Mein Problem:
Ein kleines Menü auf meiner Homepage testet AJAX mit PHP und Perl.
http://http://isonthenet.de/menuselect/menuselect_ajax.htm
Dies funktioniert einwandfrei in Firefox 2.
In IE 7 kommt es zu dem merkwürdigen Inhalten der Variable "importdat".
Bitte die drei Zeilen beachten, wenn diese Variable in das HTML geschrieben wird. Kurz vorher und nachher. Ist das nicht seltsam?
Wenn ich die beiden Alerts weglasse, kommt im IE 7 "data not available".
Siehe Source:
<html>
<head>
<!-- Style access for IE -->
<script src="./scriptaculous/lib/prototype.js" type="text/javascript"></script>
<script src="./scriptaculous/src/scriptaculous.js" type="text/javascript"></script>
<script type="text/javascript">
//menuselect
var usualbg = '\#91A2B8';
var overbg = '\#ABBED6';
var activebg = '\#AFCFD6';
var menuitems = 3;
function loadselect(but){
idstring = 'menu'+but;
Element.setStyle(idstring, {backgroundColor:activebg} );
for (i=1;i<=menuitems;i++){
idstring = 'menu'+i;
y = document.getElementById(idstring);
if (i == but){y.setAttribute('onmouseout', 'Element.setStyle(this, {backgroundColor:activebg});');}
else {
Element.setStyle(idstring, {backgroundColor:usualbg} );
y.setAttribute('onmouseout', 'Element.setStyle(this, {backgroundColor:usualbg});');
}
}
z = document.getElementById("loadselect");
switch (but) {
case 1:
content="./content0.cgi?menu="+but;
break;
case 2:
content="content1.php?menu="+but;
break;
case 3:
content="content0.cgi?menu="+but;
break;
default:
content='Content error, check code.';
break;
}
// Ajax HttpRequest for getting script data
dataSource = content;
importdat = '';
var XMLHttpRequestObject2 = false;
try {
XMLHttpRequestObject2 = new ActiveXObject('MSXML2.XMLHTTP');
} catch (exception1) {
try {
XMLHttpRequestObject2 = new ActiveXObject('Microsoft.XMLHTTP');
} catch (exception2) {
XMLHttpRequestObject2 = false;
}
}
if (!XMLHttpRequestObject2 && window.XMLHttpRequest) {
XMLHttpRequestObject2 = new XMLHttpRequest();
}
if(XMLHttpRequestObject2) {
XMLHttpRequestObject2.open('GET', dataSource);
XMLHttpRequestObject2.onreadystatechange = function()
{
if (XMLHttpRequestObject2.readyState == 4 &&
XMLHttpRequestObject2.status == 200) {
importdat = XMLHttpRequestObject2.responseText;
}
else {importdat = 'data not available';}
}
XMLHttpRequestObject2.send(null);
}
alert(importdat);
z.innerHTML = importdat;
alert(importdat);
}
</script>
</head>
<body>
<table align="center" border="1" height="300px" style="border-collapse:collapse;text-align:center;font-face:verdana;font-weight:bold;font-size:12px;">
<tr height="40px">
<script type="text/javascript">
for (i=1;i<=menuitems;i++){
document.write('<td width="50px" id="menu'+i+'" onclick="loadselect('+i+');" style="border:thin solid black; cursor:pointer;background-color:'+usualbg+';" onmouseover="Element.setStyle(this, {backgroundColor:overbg} );" onmouseout="Element.setStyle(this, {backgroundColor:usualbg} );">'+i+'</td>');
}
</script>
</tr>
<tr>
<td colspan=4 id="loadselect"></td>
</tr>
</table>
</body>
</html>