Solved

Loading 2 ajax scripts body=onload

Posted on 2010-09-07
2
642 Views
Last Modified: 2012-05-10
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

0
Comment
Question by:brad0525
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
2 Comments
 
LVL 29

Accepted Solution

by:
Göran Andersson earned 500 total points
ID: 33619781
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
 
LVL 29

Expert Comment

by:Göran Andersson
ID: 33619816
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

Featured Post

Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

International Data Corporation (IDC) prognosticates that before the current the year gets over disbursing on IT framework products to be sent in cloud environs will be $37.1B.
Nothing in an HTTP request can be trusted, including HTTP headers and form data.  A form token is a tool that can be used to guard against request forgeries (CSRF).  This article shows an improved approach to form tokens, making it more difficult to…
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

728 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question