"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