Loading 2 ajax scripts body=onload

As you can see in the attached code I am trying to run 2 ajax scripts using body=onload... The second is the only one that loads, for some reason the first will never load if there are two onload request, but they both work perfectly when ran alone..
<script type="text/javascript">
function CDRInfo(str)
{
if (str=="")
  {
  document.getElementById("content").innerHTML="";
  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()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("content").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","cdr_ajax.php?load_cdr_page="+str,true);
xmlhttp.send();
}
</script>

<script type="text/javascript">
function load(str)
{
if (str=="")
  {
  document.getElementById("ops").innerHTML="";
  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()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("ops").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","operations.php?operation="+str,true);
xmlhttp.send();
}
</script>
</head>
<body onload="CDRInfo(1);load()">

Open in new window

brad0525Asked:
Who is Participating?
 
Göran AnderssonConnect With a Mentor Commented:
You haven't declared the xmlhttp variable as local, so both functions use the same global variable. That means that the second function overwrites the XMLHttpRequest object created by the first function, so when the callback set by the first function tries to check the status of the response, it instead checks the status of the other request.

Change both occurances of this:

  xmlhttp=new XMLHttpRequest();

into:

  var xmlhttp=new XMLHttpRequest();

This will make the variables local. This also means that a closure will be created for each callback, which contains the local variable so that the code in the callback function can use it.
0
 
Göran AnderssonCommented:
On second thorught, as the variable is assigned in different if statements, you better declare it the first you do in the function:

  var xmlhttp;
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.