It only happens when the api servers are slow and tonight they are all answering within 2 seconds so I can't make it happen. I thought about it changing the wrong element but I don't see how one element could be changed twice or three times as all the elements are changed by the end and the query is only launched once for each ID. To make sure of this I set it to send the element id name through the ajax request and change the corresponding id name with the ajax result. Also I don't know if it could change anything, I launch the ajax request more than ten times simultaniously using the same PHP script but just changing the values sent to this script. Would it be quicker or better if I duplicated the PHP script and sent each ajax request to a seperate script ?

Thankyou for your answer I will keep an eye on it and check with firebug next time it happens.

James wrote:
Could you set up a test page with this code? It's difficult to tell
just by looking at it.
Use Firebug to check and make sure whether it's really resending a
request or not, or whether it's somewhere in the code that is
incorrectly modifying the wrong parts of the DOM from subsequent
requests.

On Feb 20, 1:53 am, Jsbeginner <jsbegin...@monarobase.net> wrote:
Hello,

I've been working on a jquery projet (with the lastest stable version of
jquery) that retrieves information using json from a php script that
requests information from an API.
The script lists all the different extensions with a status colomn that
says what it's doing (waiting, searching or result).
The script gets the list of extensions form an input select drop down
that's generated by PHP (this allows me to manage extensions using a
database). It then launches the search for the selected extension and
when the search is finished it launches the search for all the other
extensions.

I need one answer per query but it seems that the ajax success function
is launched more than once which is not what I want, also sometimes it
seems to keep some sort of memory of what the answer was last time (if I
add a sleep function to the php script sometimes it gets the first
answer befor the sleep is over) ...

I've got a php script to check whois servers that replys with either
taken, available or error.

When the whois servers answer quickly there are no visible problems, but
when they are slow the ajax request seems to be launched a second time
and sometimes a third time when they are very slow.

So I might see for example : domain.com, status : available, and then 2
seconds later it will be replaced by domain.com, status : error and
sometimes then replaced by domain.com, status : available.

In order to test this I replaced ".html(" by ".append(" and I can then
see all the different results...

Of course I could check that the html id contains the "searching" text
and if not to not change it's value, but I would like to stop it
launching the search more than once ... !

Is this a bug or an error in my code ? should I try it with an earlier
version of jquery ?

Here is my javascript code :

function CheckWhois() {
    $('#domchk').submit(function() {
        ls = Array();
        $("#dext>option").each(function(i){
            i = i+1;
ls[i] = $(this).val(); });
        var ndom = $('#ndom').val();
        var dext = $('#dext').val();
        $("#domresult").html("<table
id=\"domtab\"><tr><th>Sel.</th><th>Domain</th><th>status</th></tr><tr><td
colspan=\"4\">Chose TLD</td></tr><tr class=\"chosen\"><td><input
type=\"checkbox\" name=\"sel\" value=\""+ndom+dext+"\"
/></td><td>"+ndom+dext+"</td><td id=\"chosenstatus\"><img
src=\"images/domload.gif\" alt=\"en cours ...\" /></td></tr><tr><td
colspan=\"4\">Autres Extensions</td></tr></table>");
        for ( var e in ls) {
            if (dext != ls[e]) {
                $("#domtab").append("<tr class=\""+ls[e]+"\"><td><input
type=\"checkbox\" name=\"sel\" value=\""+ndom+ls[e]+"\"
/></td><td>"+ndom+ls[e]+"</td><td id=\"status"+e+"\"><img
src=\"images/domball.gif\" alt=\"waiting ...\" /></td></tr>");
} }
        $.ajax({
                url : "scripts/ajaxwhois.php",
                type : "POST",
                data : "domain="+ndom+"&ext="+dext,
                dataType : "json",
                error : function (xhr, desc, exception)
{$("#chosenstatus").html("Error"); },
                success : function (data) {
                    if(data.error) {
                        extd.html("Erreur");
                    } else {
                        $("#chosenstatus").html(data.status);
                        for ( var e in ls) {
                            var extd = $("#status"+e);
                            if (dext != ls[e]) {
                                extd.html("<img
src=\"images/domload.gif\" alt=\"searching ...\" />");
                                GetWhois(ndom,ls[e],e);
                            }
                        }
                    }
                }
            });

        return false;
});
}

function GetWhois(ndom,ls,e){
        $.ajax({
            url : "scripts/ajaxwhois.php",
            type : "POST",
            data : "domain="+ndom+"&ext="+ls+"&num="+e,
            dataType : "json",
            error : function (xhr, desc, exception) {
$("#status"+e).html("Error");},
            success : function (data) {
            if(data.error) {
            $("#status"+e).html("Error");
            } else {
            $("#status"+data.num).append(data.status);
            }
            }
        });

}

$(document).ready(function(){
CheckWhois();

});

Thankyou !


Reply via email to