Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> [jQuery] Jak sprawdzić czy skrypt po załadowaniu ajaxa zwraca true?
deha21
post 21.04.2012, 19:34:18
Post #1





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Po kliknięciu na przycisk ajaxa wywołuje mi skrypt php. W nim mam warunki, które mogą zwrócić TRUE albo FALSE. Potrzebuję zrobić tak, że w przypadku gdy zwraca mi TRUE ajax wysyła formularz, a w przypadku FALSE, zwraca wartość którą pokazuje ten pierwszy skrypt (ostrzeżenie). Podam kod:
[JAVASCRIPT] pobierz, plaintext
  1. $("#dodaj").live("click",function(){
  2. var dane=$("#dane").val();
  3. var info = $.ajax({
  4. type:"POST",
  5. url:"skrypt.php",
  6. data:{dane:dane},
  7. success:function(){$("#div").load("skrypt.php")}, //jeśli TRUE
  8. //kod który wykonuje się w przypadku zwrócenia przez skrypt.php FALSE
  9. });
  10. return false;
  11. });
[JAVASCRIPT] pobierz, plaintext


--------------------
Go to the top of the page
+Quote Post
mortus
post 21.04.2012, 19:44:06
Post #2





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


W tej chwili dwukrotnie wysyłasz żądanie XMLHttpRequest, przy czym jedno metodą POST (realizowane przez metodę .ajax()), a drugie metodą GET (to z kolei realizuje metoda .load()). Jest to trochę bez sensu. Tymczasem dostęp do danych otrzymanych w odpowiedzi serwera możesz uzyskać poprzez callback success, jak poniżej.
[JAVASCRIPT] pobierz, plaintext
  1. $("#dodaj").live("click", function() {
  2. var dane = $("#dane").val();
  3. var info = $.ajax({
  4. type: "POST",
  5. url: "skrypt.php",
  6. data: {
  7. dane: dane
  8. },
  9. success: function(data) {
  10. if(data) {
  11. // tutaj wykonujemy kod, który ma się wykonać, gdy skrypt.php zwróci TRUE
  12. } else {
  13. // a tutaj jeśli zwróci false
  14. }
  15. }
  16. });
  17. return false;
  18. });
[JAVASCRIPT] pobierz, plaintext


Ten post edytował mortus 21.04.2012, 19:45:28
Go to the top of the page
+Quote Post
deha21
post 21.04.2012, 19:56:30
Post #3





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Czyli powinno być coś takiego?
[JAVASCRIPT] pobierz, plaintext
  1. success: function(data) {
  2. if (data) {
  3. alert("Dodano");
  4. } else {
  5. $("#checker").load(data);
  6. }
  7. }
[JAVASCRIPT] pobierz, plaintext

Bo nie działa. Cały czas wywala TRUE, mimo że na 100% jest FALSE.


--------------------
Go to the top of the page
+Quote Post
mortus
post 21.04.2012, 20:07:34
Post #4





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Zainstaluj sobie Firebuga pod Firefoxa i włącz zakładkę sieć. Wyślij żądanie i podejrzyj odpowiedź. Skorzystaj z warunku:
[JAVASCRIPT] pobierz, plaintext
  1. if(data == 'TRUE')
[JAVASCRIPT] pobierz, plaintext

bo skrypt.php zapewne zwraca tekst. Do umieszczenia odpowiedzi w kontenerze użyj metody .html(), a nie .load(), bo .load() ponownie wysyła żadanie XMLHttpRequest tyle, że metodą GET. Callback success po tych zmianach powinien wyglądać tak:
[JAVASCRIPT] pobierz, plaintext
  1. success: function(data) {
  2. if (data == 'TRUE') {
  3. alert("Dodano");
  4. } else {
  5. $("#checker").html(data);
  6. }
  7. }
[JAVASCRIPT] pobierz, plaintext


Ten post edytował mortus 21.04.2012, 20:10:03
Go to the top of the page
+Quote Post
deha21
post 21.04.2012, 20:37:41
Post #5





Grupa: Zarejestrowani
Postów: 544
Pomógł: 5
Dołączył: 18.08.2009

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


Dzięki. Musiałem zrobić data=='1'... nie wiem czemu ale działa wink.gif


--------------------
Go to the top of the page
+Quote Post
mortus
post 21.04.2012, 20:48:37
Post #6





Grupa: Zarejestrowani
Postów: 2 178
Pomógł: 596
Dołączył: 25.09.2009
Skąd: Piwniczna-Zdrój

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


Przy pracy z AJAX-em Firebug dla FF (lub odpowiednie narzędzia dla innych przeglądarek) jest rzeczą niezbędną, nie dość, że umożliwia śledzenie skryptów javascript, to jeszcze pozwala na podglądanie żądań i odpowiedzi wysyłanych do i z serwera. Zainstalujesz, to zobaczysz, czy tam rzeczywiście przychodzi w odpowiedzi 1 (która swoją drogą również oznacza prawdę - TRUE).

EDIT:
Taki mały teścik:
  1. echo true;


Ten post edytował mortus 21.04.2012, 20:51:00
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: 14.08.2025 - 11:23