WiRRE Skrevet 27. august 2007 Skrevet 27. august 2007 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!
eiden84 Skrevet 27. august 2007 Skrevet 27. august 2007 Foreslår heller at du laster ned Prototype: http://prototypejs.org/ var url = 'getdata.php'; new Ajax.Request(url, { method: 'get', onSuccess: function(transport) { alert(transport.responseText); } });
WiRRE Skrevet 28. august 2007 Forfatter Skrevet 28. august 2007 Ganske så genial denne "prototype.js", tok meg ca 15 minutter på toget i dag til å forstå hvor genial den faktisk var...
eiden84 Skrevet 28. august 2007 Skrevet 28. august 2007 (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 28. august 2007 av eiden84
Bjørn Christiansen Skrevet 4. september 2007 Skrevet 4. september 2007 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; } }
magicgunnar Skrevet 5. september 2007 Skrevet 5. september 2007 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.
Peter Skrevet 8. september 2007 Skrevet 8. september 2007 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.
eiden84 Skrevet 9. september 2007 Skrevet 9. september 2007 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/
Peter Skrevet 9. september 2007 Skrevet 9. september 2007 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.
Anbefalte innlegg
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 kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå