Döngü ajax readyState in () uyarı olmadan çalışmaz () değil

1 Cevap php

Problem description: Hello !

My XMLHTTPRequest object, when ready, does a couple of things, as in, the responseText which i receive, is split up, and sent as a parameter to myFunction() Now, i need to call myFunction() 'n' number of times, with substrings of the response text as parameters.

This Works:

myAjaxObj.onreadystatechange=function() 
    {   
        if(myAjaxObj.readyState==4) 
        {
            if(myAjaxObj.status==200) 
                        {
                            myFunction( myAjaxObj.responseText, id )

This DOESNT Work:

myAjaxObj.onreadystatechange=function() 
    {   
        if(myAjaxObj.readyState==4) 
        {
            if(myAjaxObj.status==200) 
                        {
                            var count i=0;
                            for( i=0; i < 5; i++ )
                            {   
                                [b]alert("Without this it wont work") [/b]
                                myFunction( myAjaxObj.responseText, i );
                            }

Basically, the code within the for-loop wont run, unless the alert() is uncommented. Ive read somewhere about javascript closures, and the facts that it kinda gives the execution/rendering to get in sync

Ne çözüm olurdu?

1 Cevap

Eğer onreadystatechange fonksiyon yoklama değil çünkü tamam, bu oluyor. Temelde, çağrı uyumsuz olduğunu ve bu değişiklikleri görmek için her birkaç milisaniyede sizin readyState değişken yoklamak gerekir. Uyarı AJAX yanıt istemci tarafından alınan edildiği sırasında uzun bir duraklamaya neden olmaktadır - Bu () uyarı ile çalışıyor nedeni budur. Uyarı bir tepki var ve gerektiği gibi kod çalıştırdıktan sonra readyState değişkeni kontrol edilir.

Ancak, readyState değişken için uyarı olmaksızın (), sizin kod kontroller sadece once

Bir yol etrafında çağrı false asenkron parametresini ayarlayarak çağrı synchronous yapmaktır. Bu AJAX yanıt alınıncaya kadar müşteri donacak bir dezavantajı vardır.

Başka bir yol readyState değişken yoklama tutmaktır.

Temelde, düzgün kendini çalıştırmak için geri çağırma işlevi güven olmamalıdır - bu birçok kez takılıyor!