Velocity Reviews - Computer Hardware Reviews

Velocity Reviews > Newsgroups > Programming > Javascript > AJAX onreadystatechange function called too many times

Reply
Thread Tools

AJAX onreadystatechange function called too many times

 
 
bgold12
Guest
Posts: n/a
 
      08-10-2008
I have a page that calls a javascript function every second using
setInterval():

...
<body onload="setInterval('UpdateMessages(1);', 1000 );">
...

In UpdateMessages(), I create an AJAX XMLHttpRequest object and send
the request (with open() and send()), and I make sure to set the
onreadystatechange function.

However, the onreadystatechange function is called twice the first
second the page is run, where the xmlhttp object readyState variable
is 2 and then 4, and then each of the following seconds it is called 4
times, where the readyState variable is 4, then 4, then 2, and then 4
again. What is going on? I want to be able to execute some code when
the AJAX request is complete (i.e. when the readyState is 4) but it is
then executed 3 times because I'm getting a readyState of 4 three
times! I also checked the status variable of the xmlhttp object, and
it's always 200.

If you want the code, ask. Thanks.
 
Reply With Quote
 
 
 
 
Thomas 'PointedEars' Lahn
Guest
Posts: n/a
 
      08-10-2008
bgold12 wrote:
> I have a page that calls a javascript function every second using
> setInterval():


Problem recognized?

> ... <body onload="setInterval('UpdateMessages(1);', 1000 );">

^^^^^^^^
> ...
>
> In UpdateMessages(), I create an AJAX XMLHttpRequest object and send the
> request (with open() and send()), and I make sure to set the
> onreadystatechange function.
>
> However, the onreadystatechange function is called [...] 4 times, where
> the readyState variable is 4, then 4, then 2, and then 4 again. What is
> going on?


The same method is called on different XHR objects.

> I want to be able to execute some code when the AJAX request is complete
> (i.e. when the readyState is 4) but it is then executed 3 times because
> I'm getting a readyState of 4 three times! I also checked the status
> variable of the xmlhttp object, and it's always 200.


Do not use setInterval() with repeated XHR. Call UpdateMessages(), which
should be updateMessages(), directly, and in the listener call
window.setTimeout() when readyState == 4. Be sure to make an asynchronous
request so that the UA is not blocked in the process. You should be reusing
the created XHR object.

This has been asked here before.

> If you want the code, ask. Thanks.


The usual way here is: If you want help, post the minimum of the relevant
code. One call, unless it is to invoke a known method eventually, certainly
does not qualify as such.

<http://jibbering.com/faq/#FAQ2_3>


PointedEars
--
Use any version of Microsoft Frontpage to create your site.
(This won't prevent people from viewing your source, but no one
will want to steal it.)
-- from <http://www.vortex-webdesign.com/help/hidesource.htm>
 
Reply With Quote
 
 
 
Reply

Thread Tools

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are On
Pingbacks are On
Refbacks are Off


Similar Threads
Thread Thread Starter Forum Replies Last Post
Firefox XMLHttpRequest onreadystatechange handler not called petermichaux@gmail.com Javascript 2 09-14-2006 01:55 AM
How many times is too many times? Jules W MCSA 3 08-30-2005 07:33 PM
three times copy ctor called, one ctor called, why? Apricot C++ 4 04-16-2004 07:55 AM
Why is the Constructor called 4 times but the Destructor 5 times? djskrill C++ 9 10-01-2003 07:18 PM
OnItemCreated and OnItemDataBound called too many times? Pete Coolidge ASP .Net Datagrid Control 0 07-04-2003 09:25 PM



Advertisments