Post
#1
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 15.12.2005 Skąd: Poznań Ostrzeżenie: (0%)
|
Witam.
Zakupiłem niedawno książkę: "AJAX i PHP. Tworzenie interaktywnych aplikacji internetowych" (wyd. Helion) i mam niestety problem już na pierwszym przykładzie z tej książki (zapewne jakiś błąd w druku, bo kod jest prawie że w 100% skopiowany z książki). Niestety - moja mała (jeszcze) wiedza na temat AJAKSA nie pozwala mi rozwiązać problemu samodzielnie (uprzedzając pytania - Google też nie pomogło). Plik index.html:
Plik quickstart.js: Kod var xmlHttp = createXmlHttpRequestObject(); function createXmlHttpRequestObject() { var xmlHttp; if (window.ActiveXObject) { try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (e) { xmlHttp = false; } } else { try { xmlHttp = new XMLHttpRequest(); } catch (e) { xmlHttp = false; } } if (!xmlHttp) { alert("Błąd podczas tworzenia obiektu XMLHttpRequest!"); } else { return xmlHttp; } } function process() { if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0) { name = encodeURIComponent(document.getElementById("myName").value); xmlHttp.open("GET", "quickstart.php?name=" + name, true); xmlHttp.onreadystatechange = handleServerResponse; xmlHttp.send(null); xmlHttp.overrideMimeType("application/xhtml+xml; charset=utf-8"); } else { setTimeout("process()", 1000); } } function handleServerResponse() { if (xmlHttp.readyState == 4) { if (xmlHttp.status == 200) { xmlResponse = xmlHttp.responseXML; xmlDocumentElement = xmlResponse.documentElement; helloMessage = xmlDocumentElement.firstChild.data; document.getElementById("ajaxMessage").innerHTML = "<em>" + helloMessage + "</em>"; setTimeout("process()", 1000); } else { alert("Wystąpił błąd podczas uzyskiwania dostępu do serwera: " + xmlHttp.statusText); } } } Plik quickstart.php:
Po otworzeniu strony pod Firefoksem, Firebug wyrzuca cały czas jeden i ten sam error:
Moje pytanie brzmi - w jaki sposób poprawić wywołanie funkcji handleServerResponse(), tak aby kod ten wreszcie zaczął działać? Z góry dziękuję za pomoc. Ten post edytował m010ch 30.09.2007, 11:16:48 |
|
|
|
![]() |
Post
#2
|
|
|
Grupa: Zarejestrowani Postów: 6 Pomógł: 0 Dołączył: 15.12.2005 Skąd: Poznań Ostrzeżenie: (0%)
|
Dzieje się tak dlatego, ponieważ plik .php ma za zadanie wygenerować dokument XML a nie może prawidłowo ustawić header'a gdy już coś wysłał. (BOM). Wystarczy uruchomić sam plik .php żeby się o tym przekonać. Pojawi się wtedy znany komunikat Cannot modify header information... Faktycznie - dzięki za wyjaśnienie. edit: jeśli korzystasz z Notepad++ to, to 'poprawne' kodowanie UTF-8, które nie będzie ci sprawiać problemów w PHP, to właśnie: ANSI as UTF-8 bez BOM Tak - ustawiłem je jako domyślne dla wszystkich i faktycznie działa (co nie zmienia faktu, że błędy parsowania XML dla polskich ogonków w imieniu wpisanym do inputa, o których wspomniałem wyżej nadal występują...) Dzięki za dotychczasową pomoc - jeżeli domyślasz się jeszcze co może powodować wspomniane przeze mnie problemy - podziel się proszę swoimi podejrzeniami (IMG:http://forum.php.pl/style_emoticons/default/snitch.gif) |
|
|
|
m010ch Problem początkującego - dlaczego nie działa ten kod? 30.09.2007, 00:37:34
atomek4 Cześć,
ta książka ma kilka takich niedoróbek. Ści... 30.09.2007, 09:00:25
m010ch Cytat(atomek4 @ 30.09.2007, 08:00:25 ... 30.09.2007, 10:38:05
atomek4 Sprawdziłem, wydaje mi się, że problem leży w BOM-... 30.09.2007, 11:20:43
atomek4 Co parsowania ogonków, to w tych kodach z książki ... 30.09.2007, 13:13:28
m010ch Dzięki - jesteśmy coraz bliżej rozw... 30.09.2007, 14:03:40
atomek4 Chyba wiem o co chodzi, błąd tym razem dotyczy fun... 30.09.2007, 14:16:59
m010ch Dzięki wielkie atomek4!
Problem został prawi... 30.09.2007, 18:03:34 ![]() ![]() |
|
Aktualny czas: 24.12.2025 - 10:04 |