Hej alla!
Jag har ett problem med IE. I forum.js har jag en koll som kollar om det sista inlägget (last_post) matchar det senaste inlägget i databasen (lastpost). Om lastpost är större än last_post betyder det att det finns nya inlägg och handleServerResponse() kallas. Detta är markerat i fet.
I fx funkar detta perfekt (ej kollat opera) men i IE så får jag bara felet
Error reading the response: [object Error]
Jag vet att fx och IE tolkar XML-svar olika men hur ska jag lösa detta?
Länk för dem som vill titta hur det ser ut:
https://www.guida.nu/nytt/visa_alla/ och klicka på test-thread.
forum.js
/* Adressen till XML-dokumentet där vi hämtar inläggen */
//var adress = "http://www.guida.nu/nytt/visa_alla/ajax.php?threadID=";
//var bild_url = "http://www.guida.nu/nytt/visa_alla/";
var bild_url = "";
var adress = "ajax.php?threadID=";
var xmlResponse2, xmlRoot2;
var lastpost;
var notify = document.getElementById("notify");
/* the XMLHTTP object för att samarbeta med servern */
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
//Håller XMLHTTPRequest object
var xmlHttp;
try
{
xmlHttp = new XMLHttpRequest();
}
catch(e)
{
//anta IE6 eller äldre
var XmlHttpVersions = new Array("MSXML2.XMLHTTP.6.0", "MSXML2.XMLHTTP.5.0", "MSXML2.XMLHTTP.4.0", "MSXML2.XMLHTTP.3.0", "MSXML2.XMLHTTP", "Microsoft.XMLHTTP");
//prova varje XmlHttp version tills en funkar
for (var i = 0; i<XmlHttpVersions.length && !xmlHttp; i++)
{
try
{
//Försök skapa en XMLHttpRequest object
xmlHttp = new ActiveXObject(XmlHttpVersions[i]);
}
catch (e){}
}
}
//returnera det skapade objektet eller visa felmeddelande
if(!xmlHttp)
alert("Error creating the XMLHttpRequest object");
else
return xmlHttp;
}
function getnewposts(threadID){
if(xmlHttp)
{
try
{
xmlHttp.open("GET", adress + encodeURIComponent(threadID) + "&newpost=" + encodeURIComponent(last_post));
xmlHttp.onreadystatechange = handleRequestStatusChange; //Hantera svar
xmlHttp.send(null); //skicka inget
}
catch(e){}
}
}
function handleRequestStatusChange(){
var target = document.getElementById("ajax_forum_start");
// var loader = document.getElementById("ajax_loader");
var notify = document.getElementById("notify");
if(xmlHttp.readyState == 4)
{
notify.innerHTML = '';
//loader.innerHTML = '';
if(xmlHttp.status == 200 )
{
[B]xmlResponse2 = xmlHttp.responseXML;
xmlRoot2 = xmlResponse2.documentElement;
//rada upp... allt
//forumsdata
lastpostArray = xmlRoot2.getElementsByTagName("lastpost");
lastpost = lastpostArray.item(0).firstChild.data;
if(lastpost > last_post){
try
{
handleServerResponse();
}
catch(e)
{
alert("Error reading the response: " + e.toString());
}[/B]
}else if(lastpost == last_post){
notify.innerHTML = "Inga nya inlägg!";
}
}
else
alert("Error fetching the data:\n" + xmlHttp.statusText + "\n" + xmlHttp.status);
}
/*else if(xmlHttp.readyState == 1 || xmlHttp.readyState == 2 || xmlHttp.readyState == 3)
{
loader.innerHTML = "<img src=\"" + bild_url + "images/load2.gif\" alt=\"Laddar\" style=\"border:none;\">";
}
*/
}
function handleServerResponse(){
/* [...] */
//Gör så att det senaste inlägget är last_post
last_post = lastpost;
}
Index.php
<script type="text/javascript" language="JavaScript">last_post = 5; //skrivs ut m.h.a. .$last_posts['postid']. (PHP)</script>