WN

WN (https://www.wn.se/forum/index.php)
-   Klientsidans teknologier, design och grafik (https://www.wn.se/forum/forumdisplay.php?f=12)
-   -   Ajax-trubbel! (https://www.wn.se/forum/showthread.php?t=15888)

Frej 2006-08-29 00:35

Jag har lite problem med en Ajax grej.

Jag får alltid upp föregående resultat... ajax kod:

Kod:

function getLastId(intId){

    xr = new ActiveXObject("Microsoft.XMLHTTP");
    xr.open("GET", "lastid.asmx/last?localId=" + intId, true);
    xr.onreadystatechange = function() {
   
    doc = xr.responseXML;
     
      if (xr.readyState == 4) {       
     
        if (xr.status == 200) {

          if (doc.evaluate) {     
            query = doc.evaluate("//text()", doc,null,XPathResult.STRING_TYPE, null).stringValue;
          }else {
            query = doc.selectSingleNode("//text()").data;
          }
       
         
         
        } else {
          query = "Error";
        }
       
       
      }
    }
   
    xr.send(null);
    return query;
  }

När jag kör tex

alert(getLastId("123"))
så får jag blankt första gången.
men kör jag koden så här:
alert(getLastId("123"))
alert(getLastId("321"))

Så kommer första alerten vara tom medans andra innehåller IDt till 123 (den första alerten)

Någon som ser något fel i koden eller kan ge mig tips på hur jag kan få igång det...

eg0master 2006-08-29 08:00

Jag misstänker att det har med A:et i Ajax (Asynkront). Det du försöker göra är väldigt synkront.

Försök på detta sätt istället (reservation för syntaxfel):
Kod:

function getLastId(intId){
    xr = new ActiveXObject("Microsoft.XMLHTTP");
    xr.open("GET", "lastid.asmx/last?localId=" + intId, true);
    xr.onreadystatechange = responseHandler;
    xr.send(null);
    return xr;
}

function responseHandler() {
    doc = xr.responseXML;
      if (xr.readyState == 4) {       
        if (xr.status == 200) {
          if (doc.evaluate) {   
            query = doc.evaluate("//text()", doc,null,XPathResult.STRING_TYPE, null).stringValue;
          }else {
          query = doc.selectSingleNode("//text()").data;
          }
        } else {
          query = "Error";
        }
      }
    alert(query); /* Här gör du det du vill göra då du får datat */
  }

xr = getLastId(4711)


Frej 2006-08-30 09:23

Funka, tack!

grazzy 2006-08-30 11:11

Kan rekommendera prototypes ajax-framework. Mycket trevlig och enkelt att använda. Så slipper du ovanstående problem och får en mera robust lösning direkt.

Frej 2006-08-30 13:30

Grazzy: Ska kika på det när jag hinner...

koala 2006-08-30 14:20

Finns även integrerat i Symfony på ett smidigt sätt... ;)


Alla tider är GMT +2. Klockan är nu 14:21.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson