Avatar billede leif Seniormester
12. juni 2009 - 17:49 Der er 2 kommentarer og
1 løsning

Hvorfor loader den kom() før den indsætter ?

Hej,

Jeg har følgende kode:
//Code Start
<script language="javascript" type="text/javascript">
<!--
//Browser Support Code
function ajaxFunction(){
    var ajaxRequest;  // The variable that makes Ajax possible!
   
    try{
        // Opera 8.0+, Firefox, Safari
        ajaxRequest = new XMLHttpRequest();
    } catch (e){
        // Internet Explorer Browsers
        try{
            ajaxRequest = new ActiveXObject("Msxml2.XMLHTTP");
        } catch (e) {
            try{
                ajaxRequest = new ActiveXObject("Microsoft.XMLHTTP");
            } catch (e){
                // Something went wrong
                alert("Your browser broke!");
                return false;
            }
        }
    }
    // Create a function that will receive data sent from the server
    ajaxRequest.onreadystatechange = function(){
        if(ajaxRequest.readyState == 4){
//            document.myForm.time.value = ajaxRequest.responseText;
        }
    }
    var kommentar = document.getElementById('kommentar').value;
    var id = document.getElementById('id').value;

      if (kommentar.length == 0)
        return;

    var queryString = "?kommentar=" + kommentar + "&id=" + id;
    ajaxRequest.open("GET", "kommentar.php" + queryString, true);
    ajaxRequest.send(null);
        kom('20');
    document.getElementById("kommentar").value = "";};
        kom('20');

//-->
</script>
//Code END


Når jeg sender en kommentar så kører den kom('20'); før den laver en submit til kommentar.php

Det var meningen at jeg indsætter kommentaren og derefter reloader den mit SPAN med kommentarer. Jeg kan se det på den måde at hvis jeg sender en kommentar så kommer den ikke frem før jeg sender en ny kommentar, men tilgengæld kommer den så ikke frem.

Var det uforståeligt ?

/Leif
Avatar billede tjens Nybegynder
12. juni 2009 - 23:02 #1
Jeg går ud fra at kom("20") er en anden ajax rutine som henter fra serveren.

Da dine 2 ajax kald er helt uafhængige på serveren, kan det være at kom() får sit svar før kommentar.php er færdig med at skrive i databasen.

Prøv at flytte kom("20") til readyState == 4 scopet, så du er sikker på at kommentaren er skrevet til databasen inden du læser ud igen.
Avatar billede leif Seniormester
04. april 2010 - 00:04 #2
Jeg må indrømme jeg kan ikke huske hvad løsningen var, men smid et svar.
Avatar billede tjens Nybegynder
04. april 2010 - 09:15 #3
Svar
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester