Gå til innhold

universal ajax funksjon


Anbefalte innlegg

Skrevet

Har etter hvert endt opp med X antall forskjellige ajax funksjonert i javascript fila mi, og har bestemt meg for å rydde opp litt. bestemte meg derfor for å lage en funksjon som man sender url til, og som returnerer enten false, hvis noe gikk til galt, eller xmlhttp.response hvis det gikk bra, slik at jeg kan skrive f.eks:

 

alert(doAjax(getdata.php));

 

Greia mi ser slik ut:

 

function doAjax(url){
var httpRequest;
if (window.XMLHttpRequest)
 { // Mozilla, Safari, ...
   httpRequest = new XMLHttpRequest();
   if (httpRequest.overrideMimeType)
    {
     httpRequest.overrideMimeType('text/html');
     }
    }
 else if (window.ActiveXObject)
  { // IE
    try { httpRequest = new ActiveXObject("Msxml2.XMLHTTP"); }
    catch (e)
     {
      try {
         httpRequest = new ActiveXObject("Microsoft.XMLHTTP");
           }
       catch (e) {}
      }
  }
 if (!httpRequest)
  {
     alert('Giving up, cannot create an AJAX instance');
     return false;
   }
   url = encodeURI(url)
 httpRequest.open('GET', url, true);
 httpRequest.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
 httpRequest.onreadystatechange = function()
  {
 if (httpRequest.readyState == 4)
  {
//Respones funksjon!
    if(httpRequest.responseText=='false'){
    var response= httpRequest.responseText;
    return response;}
    else{
    var response= httpRequest.responseText;
    return response;}
  }
 }
httpRequest.send('action=true');
return response;
}

 

Problemet mitt er at jeg får den til å kjøre kallet, men jeg får ikke tilbake response tilbake response!

Videoannonse
Annonse
Skrevet

Ganske så genial denne "prototype.js", tok meg ca 15 minutter på toget i dag til å forstå hvor genial den faktisk var... ;)

Skrevet (endret)

Ja, prototype kan gi enhver webutvikler benner. Hvis du lærer deg å bruke prototype skikkelig, sparer du sykt mye tid.

 

Scriptaculous er bygd på prototype-rammeverket. Det er et animasjonsbibliotek:

http://script.aculo.us/

 

JQuery er et annet rammeverk som det er verdt å ta en titt på:

http://jquery.com/

Endret av eiden84
Skrevet
Problemet mitt er at jeg får den til å kjøre kallet, men jeg får ikke tilbake response tilbake response!

9369456[/snapback]

 

 

Har du funnet noen løsning på problemet? Sitter med ei bok her, CSS, DHTML & Ajax av Jason Cranford Teague, med et kodeeksempel. Får det heller ikke til å fungere.

 

Klikk for å se/fjerne innholdet nedenfor

// ajaxBasics.js: Inkluder denne filen for oppretting av ajaxfunksjoner

function fetchData(url,dataToSend,objectID)
{
var pageRequest = false;
if(window.XMLHttpRequest)
{
 pageRequest = new XMLHttpRequest();
}
else if (window.ActiveXObject)
{
 pageRequest = new ActiveXObject("Microsoft.XMLHTTP");
}
else
{
 return false;
}
pageRequest.onreadystatechange = filterData(pageRequest,objectID);
if(dataToSend)
{
 var sendData = 'sendData=' + dataToSend;
 pageRequest.open('POST',url,true);
 pageRequest.setRequestHeader('Content-Type','application/x-www-form-urlencoded');
 pageRequest.send(sendData);
}
else
{
 pageRequest.open('GET',url,true);
 pageRequest.send(null);
}
}
function filterData(pageRequest,objectID)
{
var object = document.getElementById(objectID);
if(pageRequest.readyState == 4)
{
 if(pageRequest.status==22)
 {
 	object.innerHTML = pageRequest.responseText;
 }
 else if(pageRequest.status == 404)
 {
 	object.innerHTML = 'Sorry, that information is not currently avaiable.';
 }
 else
 {
 	object.innerHTML = 'Sorry, there seems to be some kind of problem';
 }
}
else
{
 return;
}
}

Skrevet
Har etter hvert endt opp med X antall forskjellige ajax funksjonert i javascript fila mi, og har bestemt meg for å rydde opp litt. bestemte meg derfor for å lage en funksjon som man sender url til, og som returnerer enten false, hvis noe gikk til galt, eller xmlhttp.response hvis det gikk bra, slik at jeg kan skrive f.eks:

 

alert(doAjax(getdata.php));

 

Problemet mitt er at jeg får den til å kjøre kallet, men jeg får ikke tilbake response tilbake response!

9369456[/snapback]

Tror muligens problemet er at returnen fra httpRequest.onreadystatechange ikke havner i returnen til doAjax(url), siden doAjax(url) blir ferdig først og returnerer en verdi og ikke gidder å vente på httpRequest.onreadystatechange. Hvis du velger å vente, vil websiden potensielt henge mens den venter. Jeg har løst problemet ved å sende med en funksjon til metoden doAjax, som httpRequest.onreadystatechange kjører når den er klar, man kan også sende med et objekt som parameter.

Skrevet

Ser prototype er nevnt, men ta også en titt på jquery for javascript-rammeverk som kan være kjekke å ha kjennskap til.

Etter å ha brukt begge vil jeg si at jquery stort sett er bedre, særlig med tanke på valg av elementer (støtter mye css og xpath), og bruk av ajax.

Skrevet
Ser prototype er nevnt, men ta også en titt på jquery for javascript-rammeverk som kan være kjekke å ha kjennskap til.

 

Se post nr. 4.

 

Etter å ha brukt begge vil jeg si at jquery stort sett er bedre, særlig med tanke på valg av elementer (støtter mye css og xpath), og bruk av ajax.

 

Bedre på hvilken måte? For deg som utvikler, eller at det kjører kjappere/raskere i browseren enn f.eks Prototype?

 

Når det gjelder valg av elementer baser på css-selektorer, kan du sjekke hastigheten på de mest brukte/populære js-rammeverkene:

http://mootools.net/slickspeed/

Skrevet
Etter å ha brukt begge vil jeg si at jquery stort sett er bedre, særlig med tanke på valg av elementer (støtter mye css og xpath), og bruk av ajax.

 

Bedre på hvilken måte? For deg som utvikler, eller at det kjører kjappere/raskere i browseren enn f.eks Prototype?

 

Når det gjelder valg av elementer baser på css-selektorer, kan du sjekke hastigheten på de mest brukte/populære js-rammeverkene:

http://mootools.net/slickspeed/

9456029[/snapback]

Vet ikke om det er raskere eller tregere enn prototype. Det er mange skriverier om det, men jeg har ikke testet selv, så jeg vet ikke.

 

Men fra et utviklingsøyemed går det nok helt klart raskere.

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...