PDA

View Full Version : why doesnt stateChanged() take arguments?


jorgenfi
05-14-2009, 11:39 PM
Hi!

I have made this script, and it works, but I wonder why I cant use arguments in the stateChanged function? Even if I only add brackets in the call for the function, without arguments, it fail. Why? And do you have suggestions on how to avoid making one new function (statechanged2 etc. ) for each content changed?

Jørgen

var xmlhttp;
var xmlhttp2;

function changeContent(str)
{
if (str.length==0)
{
return;
}

xmlhttp=GetXmlHttpObject();
if (xmlhttp==null)
{
alert ("Your browser does not support XMLHTTP!");
return;
}
var url=str;
url=url+"_xml/";
url=url+"headerContent.txt";
xmlhttp.onreadystatechange=stateChanged;
xmlhttp.open("GET",url,true);
xmlhttp.send(null);


xmlhttp2=GetXmlHttpObject();
if (xmlhttp2==null)
{
alert ("Your browser does not support XMLHTTP!");
return;
}

var url=str;
url=url+"_xml/";
url=url+"mainContent.txt";
xmlhttp2.onreadystatechange=stateChanged2;
xmlhttp2.open("GET",url,true);
xmlhttp2.send(null);


}


function stateChanged()
{
if (xmlhttp.readyState==4)
{
document.getElementById("headerContent").innerHTML=xmlhttp.responseText;
}
}


function stateChanged2()
{
if (xmlhttp2.readyState==4)
{
document.getElementById("mainContent").innerHTML=xmlhttp2.responseText;
}
}



function GetXmlHttpObject()
{
if (window.XMLHttpRequest)
{
// code for IE7+, Firefox, Chrome, Opera, Safari
return new XMLHttpRequest();
}
if (window.ActiveXObject)
{
// code for IE6, IE5
return new ActiveXObject("Microsoft.XMLHTTP");
}
return null;
}

bdl
05-15-2009, 05:17 AM
Well, it does. Since it's an event handler, it takes one (optional) argument, the event object attached to it. Can you explain what you're trying to accomplish?

rnd me
05-15-2009, 06:14 AM
And do you have suggestions on how to avoid making one new function (statechanged2 etc. ) for each content changed?
Jørgen


something like this?



function fetch(url, div){
if(div.charAt) { div= document.getElementById(div);}
var X=!window.XMLHttpRequest ? new ActiveXObject('Microsoft.XMLHTTP') : new XMLHttpRequest;
X.open("GET",url,true);
X.onreadystatechange=function(){
if (X.readyState==4){div.innerHTML=X.responseText;}
}
X.send(null);
}

var str=""; //define your path here
fetch( str+"_xml/headerContent.txt", "headerContent");
fetch( str+"_xml/mainContent.txt", "mainContent");

jorgenfi
05-16-2009, 03:06 AM
Thank you so much, rnd_me, that inline-function solved my problem!