Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [AJAX][PHP]brak reakcji
Forum PHP.pl > Forum > XML, AJAX
tokiano
witam, ucze sie ajaxa z ksiazki Ajax. Biblia - Steve Holzner i nie dzialaja mi przyklady laczenia ajaxa z php, ale juz np ajax z xml dziala oki.
np plik: lunch2.html
  1. <head>
  2.  
  3. <title>Wykorzystywanie Ajaksa z XML</title>
  4. <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
  5.  
  6. <script language="javascript">
  7.  
  8. var menu;
  9.  
  10. var XMLHttpRequestObject = false;
  11.  
  12. if (window.XMLHttpRequest) {
  13. XMLHttpRequestObject = new XMLHttpRequest();
  14. } else if (window.ActiveXObject) {
  15. XMLHttpRequestObject = new ActiveXObject("Microsoft.XMLHTTP");
  16. }
  17.  
  18. function getmenu(menuNumber)
  19. {
  20. if(XMLHttpRequestObject) {
  21. XMLHttpRequestObject.open("GET", "menus.php?menu=" + menuNumber);
  22.  
  23. XMLHttpRequestObject.onreadystatechange = function()
  24. {
  25. if (XMLHttpRequestObject.readyState == 4 && XMLHttpRequestObject.status == 200)
  26. {
  27. var xmlDocument = XMLHttpRequestObject.responseXML;
  28. menu = xmlDocument.getElementsByTagName("menuitem");
  29. listmenu();
  30. }
  31. }
  32.  
  33. XMLHttpRequestObject.send(null);
  34. }
  35. }
  36.  
  37. function listmenu ()
  38. {
  39. var loopIndex;
  40. var selectControl = document.getElementById('menuList');
  41.  
  42. for (loopIndex = 0; loopIndex < menu.length; loopIndex++ )
  43. {
  44. selectControl.options[loopIndex] = new Option(menu[loopIndex].firstChild.data);
  45. }
  46. }
  47.  
  48. function setmenu()
  49. {
  50. document.getElementById('targetDiv').innerHTML = "Twój wybór to: " + menu[document.getElementById('menuList').selectedIndex].firstChild.data;
  51. }
  52.  
  53. </script>
  54. </head>
  55.  
  56. <body>
  57.  
  58. <h1>Wykorzystywanie Ajaksa z XML</h1>
  59.  
  60. <form>
  61. <select size="1" id="menuList" onchange="setmenu()">
  62. <option>Wybierz element z menu</option>
  63. </select>
  64. <br>
  65. <br>
  66. <input type="button" value="Wybierz menu 1" onclick="getmenu('1')">
  67. <input type="button" value="Wybierz menu 2" onclick="getmenu('2')">
  68. </form>
  69.  
  70. <div id="targetDiv" width=100 height=100>Wybrany przez Ciebie lunch zostanie wyświetlony tutaj.</div>
  71.  
  72. </body>
  73.  
  74. </html>



menus.php
  1. <?
  2. header("Content-type: text/xml");
  3. if ($_GET["menu"] == "1")
  4. $menuitems = array('Szynka', 'Indyk', 'Wołowina');
  5. if ($_GET["menu"] == "2")
  6. $menuitems = array('Pomidor', 'Ogórek', 'Ryż');
  7. echo '<?xml version="1.0" ?>';
  8. echo '<menu>';
  9. foreach ($menuitems as $value)
  10. {
  11. echo '<menuitem>';
  12. echo $value;
  13. echo '</menuitem>';
  14. }
  15. echo '</menu>';
  16. ?>


po prostu jak klikam Wybierz menu to nic sie nie dzieje. Samo php dziala u mnie ok.
co moze byc przyczyna i jak to naprawic?
dodalem jQuery i tez nie dziala.
Myslalem, ze w ksiazce takich problemow nie bedzie, a tu nie dziala najwazniejsza funkcja integracji z php sad.gif Znacie moze jakies lepsze ksiazki, albo kursy, w ktorych sa juz nowosci?
a ten problem da sie jakos rozwiazac?

pozdrawiam
ziqzaq
Cytat
...i nie dzialaja mi przyklady laczenia ajaxa z php, ale juz np ajax z xml dziala oki.

Czyli wniosek może być taki, że jest coś nie tak z plikiem php, tak? Sprawdzałeś czy menus.php wykonuje się bez błędów wywołany w przeglądarce?
Może masz wyłączone short_open_tag i ci wywala skrypt php.
Ogólnie to tak js jak i php działają - sprawdzone na szybko w FF (w innych przeglądarkach mi się nie chciało).
Pozdr.

//edit: dodany link
tokiano
inne pliki .php dziala ok
w tym mi na poczatku wyswietlal sie kod, ale dodalem na poczatku <?php i teraz wywala

Cytat
Błąd parsowania XML: niezrozumiała seria znaków po elemencie dokumentu
Obszar: http://localhost//menus.php
Numer linii: 2, kolumna 1:<b>Notice</b>: Undefined index: menu in <b>C:\wamp\www\menus.php</b> on line <b>3</b><br />
^


pozdrawiam
ziqzaq
Wywala ci ten błąd i nie wiesz czemu, co? Przeczytaj sobie treść tego "noticea" i pomyśl czy jak wywołujesz menus.php to przekazujesz przez GET wymagane zmienne.
Plik php jest teraz w miarę ok (oprócz tego braku sprawdzania czy zmienna $_GET['menu'] istnieje).
JS też jest ok, musi działać i jest to sprawdzone.
Jeśli jednak nadal nie możesz tego ogarnąć to pisz dokładnie co robiłeś (każdy krok) bo inaczej to ludzie mogą tylko zgadywać.
PS.
Cytat
inne pliki .php dziala ok

To, że inne pliki "działają" to nie znaczy, że akurat w tym jednym nie ma błędu.
tokiano
jak w adresie wpisuje menus.php?menu=1 to sie wyswietla

Cytat
Podany plik XML nie zawiera żadnych informacji o stylach z nim związanych. Poniżej wyświetlone jest drzewo dokumentu.


<menu>
<menuitem>Pomidor</menuitem>
<menuitem>Ogórek</menuitem>
<menuitem>Ryż</menuitem>
</menu>


czyli chyba dobrze dziala. Problem lezy wiec w Ajaxie. Jak klikam button to znika mi info Wybrany przez Ciebie lunch zostanie wyświetlony tutaj ale nie pojawia sie to co mialo byc pobrane. Przyklad jest z ksiazki i pobrany ze strony heliona. ftp://ftp.helion.pl/przyklady/ajaxbi.zip Przekleilem, wiec chyba powinno ok dzialac? We wczesniejszych przykladach z samym xml dzialalo ok, ale jak jest xml z php to juz nie dziala sad.gif.
ziqzaq
Ok. Czyli plik php jest już bez błędów.
Cytat
Jak klikam button to znika mi info Wybrany przez Ciebie lunch zostanie wyświetlony tutaj ale nie pojawia sie to co mialo byc pobrane.

I tu mamy pierwszą niejasność. Kod który podałeś działa tak:
1) Kliknięcie w button ładuje elementy przesłane z menus.php do listy select.
2) Dopiero po wybraniu z listy elementu (nie kliknięciu buttona) zniknie napis "Wybrany przez Ciebie lunch zostanie wyświetlony tutaj." i wyświetli się np. "Twój wybór to: Wołowina".
Musiałeś coś namieszać. Jeszcze raz dla pewności sprawdziłem działanie tych skryptów (przeklejałem bez żadnych zmian oprócz ścieżki do pliku php bo dałem mu inną nazwę). Wszystko działa jak należy (sprawdzone na Operze, FF, IE8).
Może zainstaluj sobie Firebug do Firefoxa i zobacz czy javascript nie sypie jakimiś błędami.

// Edit: Łooo, aleś sypnął punktami. W takiej sytuacji jeden to aż nadto, nie trzeba dawać punktów za każdy jeden post. Jeden problem = Jeden punkt. winksmiley.jpg
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.