Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jQuery] .ajax zawsze zwraca error
Forum PHP.pl > Forum > Po stronie przeglądarki > JavaScript
flip02
Zawsze dostaje error, co tym razem jest nie tak? W firebugu nie pokazuja mi się żadne errory.

  1. $('#stype').change(function(){
  2. $.ajax({
  3. type: "POST",
  4. url: "http://localhost/ajax.php",
  5. data: "type="+ $('#stype').attr('value') +"&color="+ $('#scolor').attr('value') +"&pattern="+ $('#spattern').attr('value'),
  6. dataType: "html",
  7. success: function(){
  8. alert("cuks");
  9. },
  10. error: function(msg){alert(msg)}
  11. })});


w pliku ajax.php mam tylko <p>cos</p>
#luq
Sprawdź jak leci request w firebugu (jaką dokładnie odpowiedź zwraca).
Poza tym o wieeeele wygodniej jest podawać pole data jako objekt wink.gif
drozdii07
Przypisz te wszystkie wartości (type itd.) przed AJAX'em.

  1. type = $('#stype').attr('value');
  2. // Tak samo zrób z resztą, a później..
  3.  
  4. $.ajax({
  5. type: "POST",
  6. url: "http://localhost/ajax.php",
  7. data: {type: type, color: color, pattern: pattern},
  8. dataType: "html",
  9. success: function(){
  10. alert("cuks");
  11. },
  12. error: function(msg){alert(msg)}
  13. })});

W pliku ajax.php odbierasz sobie to normalnie POST'em wink.gif np.
  1. $type = $_POST['type'];
flip02
coś robię dalej źle, bo w odpowiedzi nic nie dostaję i pewnie dlatego wywala ciągle błąd. Moje nagłówki:

  1. Response Headers
  2.  
  3. HTTP/1.1 200 OK
  4. Date: Sun, 14 Aug 2011 11:46:43 GMT
  5. Server: Apache/2.2.16 (Ubuntu)
  6. X-Powered-By: PHP/5.3.3-1ubuntu9.5
  7. Vary: Accept-Encoding
  8. Content-Encoding: gzip
  9. Content-Length: 20
  10. Keep-Alive: timeout=15, max=100
  11. Connection: Keep-Alive
  12. Content-Type: text/html
  13.  
  14.  
  15. Request Headers
  16.  
  17. OPTIONS /ajax.php HTTP/1.1
  18. Host: localhost
  19. User-Agent: Mozilla/5.0 ....
  20. Accept: text/html,application/xhtml+xml,application/xml;q=0.9,*/*;q=0.8
  21. Accept-Language: en-us,en;q=0.5
  22. Accept-Encoding: gzip,deflate
  23. Accept-Charset: ISO-8859-1,utf-8;q=0.7,*;q=0.7
  24. Keep-Alive: 115
  25. Connection: keep-alive
  26. Access-Control-Request-Method: POST
  27.  


Origin wyżej wygląda tak : http://www.localhost:8085

ajax.php - tu robie echo z paragrafem.
#luq
Dostajesz odpowiedź HTTP 200 więc wszystko powinno być okej.
Rozumiem że odpala Ci się funkcja podana jako parametr error?

Możesz pokazać ten kod jakoś live na widocznym dla nas serwerze?
flip02
OK, wrzuciłem na serwer 2 pliki i działa. Zawartość jak wyżej z różnicą, że url wskazuje na ajax.php a nie http://localhost/ajax.php. Jedyna róznica jaką widzę to to, że plik ajax.php i test.html są w tym samym katalogu. U mnie tak nie jest, skryp wywoływany jest z url
http://www.cars.pl.localhost:8085/frontend.../3/nazwa-2#type a odwołuję się w ajaxie do http://localhost/ajax.php i problem widziałbym chyba tylko tu... ale nie widzę w tym sensu.

Wygląda na to, że nic nie jest postowane do ajax.php. W debugerze nie mam nawet zakładki POST, a Response jest pusta. Nie wiem o co chodzi.


Edycja:
No i właśnie nic się nie dzieje, bo tu już w grę wchodzi crossdomain.
#luq
Jeśli są inne domeny to powinieneś dostać błąd (jeśli nie wyłączyłeś w przeglądarce ustawień the same origin policy).
Ogólnie najłatwiej obejdziesz to wysyłając requesta ajaxowego po plik na swoim serwerze (tym samym na którym stoi plik z wysyłaniem requesta) i tam po stronie PHP pobierasz dane z innego serwera.
flip02
tak widziałem takie rozwiązanie smile.gif Dzięki.
Mogłem się wcześniej kapnąć, że chodzi właśnie o cross bo przy post w debugerze stało jak wół OPTIONS.
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.