Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: [jquery] Problem z interpretacją odpowiedzi z php przez jquery
Forum PHP.pl > Forum > Po stronie przeglądarki
dimgraf
Witam.

Mam dziwny problem. Mam sobie skrypt taki skrypt:
Kod
$.ajax
         ({
            type: "POST",
            url: "./_sys/php/check_next.php",
            datatype: 'json',
            data:
            {
               formularz: next_form,
               wyp: wp,
               dane: exp
            },
            success : function(odp2)
            {
               if (next_form == 1)
               {
                   wp = odp2;
                   next_form = 2;
               }
               else
               {
                   alert(odp2); //i tu jest problem
                   if(odp2 == "4")
                   {
                      next_form = 4;
                   }
                   else
                   {
                      alert("co jest grane: " + odp2 + "?");
                   }
               }
               wczytaj(next_form);
            }
         });

Miejsce pojawiania się problemu zaznaczyłem komentarzem. Odpowiedź z php alert wyświetla jako 4. Próbowałem odp2 podstawić bezpośrednio do next_form ale nie wywoływało funkcji wczytaj (właściwie wywoływało ale skrypt nie traktował tego 4 jako 4). Dlatego zrobiłem w ten sposób by sprawdzić co jest w odpowiedzi i mimo iż php odpowiada "4" warunek reaguje jakby odpowiedź php była inna (alert wyświetla "co jest grane: 4?"). Poniżej dam jeszcze fragment kodu php.

Kod
<?php
   $tab = $_POST['dane'];
   $form = $_POST['formularz'];
   $wyp = $_POST['wyp'];
   ...
   $wynik = explode("^", $tab);
   if($wynik[2] == "1" || $wynik[2] == "3")
         {
            echo(4);
         }
?>

Dodam, że już próbowałem echo json_encode ale problem dalej się pojawiał. Mam w skrypcie drugą funkcje która komunikuje się z php i tam wszystko działa normalnie.
ShadowD
To co odczytujesz z pliku php jest stringiem jeśli chcesz by była traktowana jak liczba zżutej ją na takową, nie wiem jak to zrobić w js profesjonalnie, ale mnożenie razy jeden pomaga zmienna=zmienna*1. Pozatym konstrukcje:
4=="4"
4==4
4==="4"
4===4

To nie to samo, raz są traktowane jako string raz int, lub ich porównanie jest inne, mniej więcej wytłumaczyć można że == to są takie same, a === identyczne.

Ps. Tak jest w php, ale z moich obserwacji wynika, że js działa podobnie. haha.gif
Ps2. Używaj ' a nie " cudzysłów jest przetwarzany, a apostrof traktowany od razu jako całość więc var+' tekst' jest równoznaczny z "var tekst" jeśli nie stosujesz zmiennych to zapisuj zawsze apostrofami, a gdy masz zmienną to już decyzja należy do Ciebie jaki sposób Ci odpowiada bardziej.
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.