Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

> [jQ]/[JS] Zapis tablic do pamięci, Ajax, przed, zamiast po wykonaniu skryptu.
Rewil
post
Post #1





Grupa: Zarejestrowani
Postów: 175
Pomógł: 0
Dołączył: 19.09.2009

Ostrzeżenie: (10%)
X----


Pobieram sobie baze XML'em, całą, ładuję ją do tablic, no właśnie, nie rozumiem czemu po za funkcją bazaXML mi nie robi ich globalnych. Zmienne przyrównane do tablic są poprawne, to znaczy są pobierane.
  1. $.ajax({
  2. type: "GET",
  3. url: "baza.xml",
  4. dataType: "xml",
  5. success: bazaXML
  6. });
  7.  
  8. pozycja = new Array();
  9. czas = new Array();
  10. naglowek = new Array();
  11. nazwa_link = new Array();
  12. link = new Array();
  13. grafika_link = new Array();
  14.  
  15. function bazaXML(xml) {
  16. id_xml = 1;
  17. $(xml).find("miniaturka").each(function () {
  18. pozycja[id_xml] = $(this).find("pozycja").text();
  19. czas[id_xml] = $(this).find("czas").text();
  20. naglowek[id_xml] = $(this).find("naglowek").text();
  21. nazwa_link[id_xml] = $(this).find("nazwa_link").text();
  22. link[id_xml] = $(this).find("link").text();
  23. grafika_link[id_xml] = $(this).find("grafika_link").text();
  24. //alert(naglowek[id_xml]);
  25. id_xml++;
  26. });
  27.  
  28. //alert(naglowek[1]); tu działa
  29. }
  30.  
  31. alert(naglowek[1]); // tu już nie
  32.  


Wygląda to tak jakby ajax, musiał się wykonać na końcu. Najpierw wyświetla się "tu już nie", dopiero później "tu działa"

@EDIT potwierdzone przypuszczenie, wrzuciłem alerta do interwała i pierwszy jest pusty, następne już nie. Jak zainicjować ajaxa żeby wykonał się jako pierwszy?

Ten post edytował Rewil 24.10.2011, 23:23:14
Go to the top of the page
+Quote Post
 
Start new topic
Odpowiedzi
fou
post
Post #2





Grupa: Zarejestrowani
Postów: 12
Pomógł: 1
Dołączył: 16.09.2006
Skąd: internet

Ostrzeżenie: (0%)
-----


Rewil,

W Twoim skrypcie wszystko działa prawidłowo:) Ajax wykonuje się jako pierwszy, jednak dalsze wykonywanie skryptu nie jest przerwane i nie czeka aż ajax się w pełni wykona, wywoła funkcję bazaXML, która przypisze poprawne wartości do zadeklarowanych zmiennych.

Jeśli chcesz, aby dalsze wykonanie skryptu 'poczekało' na ajaxa i dane w tablicach, to możesz ustawić async: false w zapytaniu ajaxowym.

Ogólnie mówiąc: z danych w zmiennych, np naglowek, powinieneś korzystać dopiero wtedy, gdy będziesz miał pewność, że te dane tam już są załadowane przez ajaxa ;]

Napisz dokładniej co chcesz osiągnąć, to spróbuje coś dokładniej podpowiedzieć, bo po tym fragmencie kodu nie wiem co dzieje się dalej z tymi danymi.
Go to the top of the page
+Quote Post

Posty w temacie


Reply to this topicStart new topic
2 Użytkowników czyta ten temat (2 Gości i 0 Anonimowych użytkowników)
0 Zarejestrowanych:

 



RSS Aktualny czas: 3.10.2025 - 10:22