/ Forside / Teknologi / Udvikling / Java Scripts / Nyhedsindlæg
Login
Glemt dit kodeord?
Brugernavn

Kodeord


Reklame
Top 10 brugere
Java Scripts
#NavnPoint
molokyle 5410
Klaudi 2799
smorch 2439
kim 1360
Harlekin 1134
bentjuul 984
gibson 800
severino 695
Random 675
10  konsulent.. 626
Forskellige funktioner via en variabel?
Fra : Mr J..


Dato : 10-01-08 14:00

Hej Alle

Er ved at lave noget Ajax script, og har dette i mit javascript:

function doSearch3(numbers){
var url = "backend.php?navn=" + document.getElementById('navn1').value;
url += "&akid=" +
encodeURIComponent(document.getElementById('akid').value);
url += "&button=0";
url += "&searchid=" + numbers + "S";
http.open("GET", url, true);
http.onreadystatechange = handleHttpResponse + numbers + X;
http.send(null);
}


Men den fejler i:
http.onreadystatechange = handleHttpResponse + numbers + X;

Humlen er jo at jeg vil kalde den handleHttpResponse jeg har brug for alt
efter hvilken data der kommer igennem..

Den skal kalde en af disse:

function handleHttpResponse0X(){
if(http.readyState == 4){
document.getElementById('updatearea5').innerHTML =
http.responseText;
}
}

function handleHttpResponse1X(){
if(http.readyState == 4){
document.getElementById('updatearea6').innerHTML =
http.responseText;
}
}

function handleHttpResponse2X(){
if(http.readyState == 4){
document.getElementById('updatearea7').innerHTML =
http.responseText;
}
}

function handleHttpResponse3X(){
if(http.readyState == 4){
document.getElementById('updatearea8').innerHTML =
http.responseText;
}
}

Men det er som om den ikke vil tillade af man sætter ting sammen i
"http.onreadystatechange = handleHttpResponse + numbers + X;" linien

Er der en der kan give et tip?

Mvh
Morten



 
 
Birger (10-01-2008)
Kommentar
Fra : Birger


Dato : 10-01-08 17:52

"Mr J.." <Nomail@nomail.dk> skrev i en meddelelse
news:478616dd$0$90262$14726298@news.sunsite.dk...
> Hej Alle
>
> Er ved at lave noget Ajax script, og har dette i mit javascript:
>
> function doSearch3(numbers){
> var url = "backend.php?navn=" + document.getElementById('navn1').value;
> url += "&akid=" +
> encodeURIComponent(document.getElementById('akid').value);
> url += "&button=0";
> url += "&searchid=" + numbers + "S";
> http.open("GET", url, true);
> http.onreadystatechange = handleHttpResponse + numbers + X;
> http.send(null);
> }
>
>
> Men den fejler i:
> http.onreadystatechange = handleHttpResponse + numbers + X;
>
> Humlen er jo at jeg vil kalde den handleHttpResponse jeg har brug for alt
> efter hvilken data der kommer igennem..
>
> Den skal kalde en af disse:
>
> function handleHttpResponse0X(){
> if(http.readyState == 4){
> document.getElementById('updatearea5').innerHTML =
> http.responseText;
> }
> }
>
> function handleHttpResponse1X(){
> if(http.readyState == 4){
> document.getElementById('updatearea6').innerHTML =
> http.responseText;
> }
> }
>
> function handleHttpResponse2X(){
> if(http.readyState == 4){
> document.getElementById('updatearea7').innerHTML =
> http.responseText;
> }
> }
>
> function handleHttpResponse3X(){
> if(http.readyState == 4){
> document.getElementById('updatearea8').innerHTML =
> http.responseText;
> }
> }
>
> Men det er som om den ikke vil tillade af man sætter ting sammen i
> "http.onreadystatechange = handleHttpResponse + numbers + X;" linien
>
> Er der en der kan give et tip?
>
> Mvh
> Morten
>

onreadystatechange er adresse på en funktion, ikke en streng.
Du kan måske klare den ved at sætte parates om udtrykket.

Der er et alternativ, som nok vil være bedre for dig at bruge.

Opret en global variabel

displayArea = null;

og brug kun een callback i doSearch3(numbers), og før du kalder http.send(),
sætter du displayArea til der hvor du vil vise resultatet. Feks:

displayArea = document.getElementById( 'updatearea'+(5+numbers));
http.onreadystatechange = handleHttpResponse;

din Handler kan du så skrive som :

function handleHttpResponse(){
if ((http.readyState == 4) && (http.status == 200)){
displayArea.innerHTML = http.responseText;
}
}


Du bør checke at status er 200 efter overførslen.
At readyState == 4, betyder at kommunikationen er slut - ikke at den
nødvendigvis er gået som den skulle.

function AjaxDone() {
if ( AjaxObj.readyState == 4) {
if ( AjaxObj.status == 200) {
// Her indsættes kode der behandler de returnerede data
}
else {
alert( 'AJAX fejl:\n'+'Status: '+AjaxObj.status+'\nBeskr:
'+AjaxObj.statusText);
}
}
}

Mener også, at du bør overveje at brug post i stedet for get.
IE cache'er gets, men ikke posts.
Og eftersom du formentlig ikke forventer samme data returneret for hvert
kald, er post alligevel det rigtige at bruge.


Birger
-----
http://bbsorensen.dk



Mr J.. (12-01-2008)
Kommentar
Fra : Mr J..


Dato : 12-01-08 08:58

Hov glemte at svare igår :)

Mange tak Birger, jeg har fået det til at spille nu, efter din som altid
gode hjælp :)

Mvh
Morten



Birger (12-01-2008)
Kommentar
Fra : Birger


Dato : 12-01-08 10:45

"Mr J.." <Nomail@nomail.dk> skrev i en meddelelse
news:47887323$0$90276$14726298@news.sunsite.dk...
> Hov glemte at svare igår :)
>
> Mange tak Birger, jeg har fået det til at spille nu, efter din som altid
> gode hjælp :)
>
> Mvh
> Morten


Velbekomme Morten ;>)


Birger
-----
http://bbsorensen.dk



Søg
Reklame
Statistik
Spørgsmål : 177558
Tips : 31968
Nyheder : 719565
Indlæg : 6408914
Brugere : 218888

Månedens bedste
Årets bedste
Sidste års bedste