AJAX onreadystatechange function called too many times

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • bgold12

    AJAX onreadystatechange function called too many times

    I have a page that calls a javascript function every second using
    setInterval():

    ...
    <body onload="setInte rval('UpdateMes sages(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
    onreadystatecha nge function.

    However, the onreadystatecha nge 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.
  • Thomas 'PointedEars' Lahn

    #2
    Re: AJAX onreadystatecha nge function called too many times

    bgold12 wrote:
    I have a page that calls a javascript function every second using
    setInterval():
    Problem recognized?
    ... <body onload="setInte rval('UpdateMes sages(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
    onreadystatecha nge function.
    >
    However, the onreadystatecha nge 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.setTimeo ut() 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>

    Comment

    Working...