Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> Problem ze startowym skryptem Ajaxa
blackstone
post 25.07.2016, 18:39:20
Post #1





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

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



Rozpoczynam właśnie przygodę z Ajaxem. Spróbowałem stworzyć pierwszy prosty skrypt który pobrał by mi zawartość pliku php o nazwie "ajax.php" ( plik z ajaxem ma rozszerzenie html ) i go wyświetlił. Niestety we wszystkich przeglądarkach wyskakuje mi okienko że moja przeglądarka nie obsługuje Ajaxu. Po proszę o jakieś sugestie bo dopiero co rozpoczynam przygodę z tym językiem i sam raczej zbyt szybko nie dojdę co jest nie tak smile.gif . Z góry dzięki za odpowiedzi.

O to skrypt

  1.  
  2. <script type="text/javascript">
  3.  
  4. function inix()
  5. {
  6.  
  7. try{ xhr = XMLHttprequest() ;}
  8. catch(e) {
  9.  
  10. try {xhr = new ActiveXObject("Msxml12.XMLHTTP") }
  11. catch(e2)
  12. {
  13. try {xhr = new ActiveXObject("Microsoft.XMLHTTP") }
  14. catch(e3){ alert("Twoja przeglądraka nie obsługuje Ajaxa"); }
  15.  
  16. }
  17.  
  18. }
  19.  
  20. return xhr ;
  21.  
  22. }
  23.  
  24. function run_ax()
  25. {
  26.  
  27. xhr = new inix() ;
  28.  
  29. xhr.open("GET","ajax.php",true) ;
  30.  
  31. xhr.onreadystatechange = function() {
  32. if(xhr.readystate == 4)
  33. { document.getElementById("show").innertHTML = xhr.responseText ; }
  34. }
  35.  
  36. xhr.send(null) ;
  37.  
  38. }
  39.  
  40.  
Go to the top of the page
+Quote Post
trueblue
post 25.07.2016, 18:50:10
Post #2





Grupa: Zarejestrowani
Postów: 6 761
Pomógł: 1822
Dołączył: 11.03.2014

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


Znajdź dwie różnice:
  1. try{ xhr = new XMLHttpRequest() ;}


--------------------
Go to the top of the page
+Quote Post
blackstone
post 2.08.2016, 17:22:43
Post #3





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

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


Dzięki, pomogło rzeczywiście głupia literówka smile.gif .

ALe mam teraz problem nowego pokroju.

Mam na kompie (dokładnie mówiąc na serwerze ) dwa pliki: jeden plik w formacie php a drugi w formacie.txt. Sprawa wygląda tak że udało mi się wyswietlić w pliku ajaxowym plik txt ale php za nic nie idzie ( a zależy mi na tym bo współpraca php i ajax to chyba podstawa czatów działających w czasie rzeczywistych jeśli mają byc oparte o sql) .

Kod prawie ten sam co wcześniej jedynie we wcześniejszych liniach 31-34 zrobiłem małą podmiankę

z

  1. xhr.onreadystatechange = function() {
  2. if(xhr.readystate == 4)
  3. { document.getElementById("show").innertHTML = xhr.responseText ; }
  4. }


na prawie to samo tylko bez sprawdzenia połączenia instrukcją warunkową.

  1. xhr.onreadystatechange = function() {
  2. // if(xhr.readystate == 4)
  3. document.getElementById("show").innerHTML= ">" + xhr.responseText ;
  4. }


bo inaczej się nic nie wyświetlało .
Poproszę o jakieś sugestie bo dopiero uczę sie chodzić w tematyce Ajax smile.gif

Ten post edytował blackstone 2.08.2016, 17:24:09
Go to the top of the page
+Quote Post
viking
post 2.08.2016, 17:33:00
Post #4





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


readyState
Myślałeś o fetch api?


--------------------
Go to the top of the page
+Quote Post
blackstone
post 2.08.2016, 18:29:00
Post #5





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

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


Chyba nie...dopiero ogarniam podstawy Ajax smile.gif, chyba że masz na myśli wykorzystanie Jquery do obsługi Ajaxu - tak mam zamiar to ogarnąć bo podobno łatwiej idzie obsługa na Jquery niz bez niego.
Jeśli nie, czy możesz napisać przykład który miałeś namyśli ? ?


Mam jeszcze inny problem który zauważyłem przed chwilą. Mój skrypt ustawiony jest na przesył asynchroniczny ( xhr.open("GET","test.txt",true) ; ) czyli jak rozumiem po każdej zmianie w zapisie pliku automatycznie powinna się wyświetlana zmiana pokazać bez klikania w odświeżanie - ale tak nie jest. Próbowałem zmieniać Get na POST a potem nawet parametr true na false - za każdym razem muszę odświeżać. Nie mam pomysłu jak to poprawic..... closedeyes.gif
Go to the top of the page
+Quote Post
viking
post 3.08.2016, 08:03:19
Post #6





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


Odświeżenie musisz zrobić sam. Async oznacza tylko że nie blokujesz głównego wątku przeglądarki. Sync jest wycofany.
Akurat FetchApi jest dużo prostsze. Wymaga zrozumienia promise które same w sobie niczym trudnym nie są chociaż początkującym sprawiają trudności.


--------------------
Go to the top of the page
+Quote Post
blackstone
post 3.08.2016, 13:42:35
Post #7





Grupa: Zarejestrowani
Postów: 98
Pomógł: 0
Dołączył: 19.03.2015

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


OK,dzięki, pobawię sie tym i zobaczy się co wyjdzie smile.gif .

"Odświeżenie musisz zrobić sam. Async oznacza tylko że nie blokujesz głównego wątku przeglądarki. Sync jest wycofany." .

W takim razie MUSZĘ zapytać czy czaty działające na wzór facebookowego to nie jest Ajax? Tam nie jest przeładowywana cała strona tylko komunikacja odbywa sie w czasie rzeczywistym ( uczestnik czatu x wysyła wiadomośc i natychmiast uczestnik y moze przeczytać wiadomość i wysłać wiadomość- bez przeładowywania ) , a właśnie coś takiego chce napisać tylko teraz to nie wiem czy obrałem dobru kierunek ( podobno podstawą tego jest Asynchroniczność,ale nie wiem czy dobrze zrozumiałem ) .
Go to the top of the page
+Quote Post
viking
post 3.08.2016, 14:37:18
Post #8





Grupa: Zarejestrowani
Postów: 6 365
Pomógł: 1114
Dołączył: 30.08.2006

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


XHR to najprostsza forma i mało skuteczna do czatu. Poczytaj raczej o Server-Sent Events, WebSockets.


--------------------
Go to the top of the page
+Quote Post

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

 



RSS Wersja Lo-Fi Aktualny czas: 29.03.2024 - 14:57