- Jak testujesz bez ajaxa i po czym wnosisz, że bez niego działa?
- po tym ,że jak działa wyświetla odpowiedź serwera, a jak nie działa to nie (undefined)
alert( xmlhttp.responseBody);
No i właśnie źle sprawdzasz!
Ten alert wywoła się przy wywołaniu loadXMLDoc() a nie przy uzyskaniu odpowiedzi od serwera.
Jeśli chcesz wyświetlić odpowiedź serwera to powinieneś ten alert umieścić w funkcji przypisanej do xmlhttp.onreadystatechange(co jest w sumie zrobione, dlatego alert( xmlhttp.responseBody); jest niepotrzebne).
Masz rację , skasowałem ten drugi alert i zaraz przetestuje. Chociaż za cholerę nie mogę zrozumieć, dlaczego wcześniej dostaje odpowiedź od serwera zanim w ogóle funkcja wykona xmlhttp.open() i prześle parametry do nagłówka :P
Boże, @danek, ale Cię tu męczą :/
Użyj jakieś biblioteki do ajaxa - wszystkie problemy znikną jak ręką odjął.
Jeżeli na stronie korzystasz z jQuery - to jQuery ma do tego funkcje. Jeżeli nie, a nie chcesz ładować tego w sumie sporego frameworka - skorzystaj z biblioteki, która ma w sobie tylko funkcje ajax, np. takie coś Google wypluwa, jest też gałąź jQuery, która ma tylko funkcje ajax, bez całej reszty. Ew. załaduj jQuery używając publicznych CDN-ów - z jQuery korzysta (z tego co pamiętam) ok. 90% z miliona najpopularniejszych stron - korzystając z CDNów masz szansę, że i tak ktoś z tego korzysta, więc ładowanie strony nie będzie dłuższe.
Czysty ajax to dla mnie pakowanie się w kłopoty. O ile lubię czysty js to do ajaxa zawsze biblioteka.
Może to głupie pytanie ,ale jak zainstalowac bibliotekę?
Tak:
<script src="http://www.ajaxtoolbox.com/request/full/AjaxRequest.js"></script>
<script type="text/javascript">
Blok JS
</script>
czy tak:
<script src="http://www.ajaxtoolbox.com/request/full/AjaxRequest.js">
Blok JS
</script>