Witaj Gościu! ( Zaloguj | Rejestruj )

Forum PHP.pl

 
Reply to this topicStart new topic
> jsonp i php
Cinamicom
post 29.03.2014, 11:18:17
Post #1





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


Witam. Mam taki kodzik:
  1. $.ajax({
  2. type: "POST",
  3. dataType: "jsonp",
  4. url: "http://stachu.pl/login.php",
  5. success: function(response){
  6. alert("ok");
  7. },
  8. error: function(response){
  9. window.location.href = "http://www.stachu.pl/login.php";
  10. }
  11.  
  12. });


A plik login.php jest taki:

  1. $out = array(
  2. 'success' => 'true'
  3. );
  4. $out = json_encode($out);
  5. echo $out;


Niestety to nie działa, cały czas wykonuje się error, czyli header na location.href

Proszę o pomoc.
Go to the top of the page
+Quote Post
trueblue
post 29.03.2014, 11:20:47
Post #2





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

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


Zobacz z jakiej domeny uruchamiasz skrypt, a do jakiej wysyłasz żądanie Ajax.

EDIT: No tak, to JSONP. Podejrzyj narzędziem developerskim jaki jest status odpowiedzi i co zwraca żądanie.

Ten post edytował trueblue 29.03.2014, 12:26:55


--------------------
Go to the top of the page
+Quote Post
Cinamicom
post 29.03.2014, 14:29:55
Post #3





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


W sumie to nic tam nie widzę.
http://screencloud.net/v/FKd
Go to the top of the page
+Quote Post
trueblue
post 29.03.2014, 14:32:58
Post #4





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

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


Za mało. Kliknij w to żądanie i po prawej sprawdź co jest w zakładce Preview lub Response.


--------------------
Go to the top of the page
+Quote Post
Cinamicom
post 29.03.2014, 14:41:08
Post #5





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


response
  1. <form action="" method="post">
  2. <input type="text" name="login" value="Login"/><br />
  3. <input type="password" name="password" value="pass"/><br />
  4. <input type="submit" name="submit" value="Zaloguj"/>
  5. </form>{"success":"true"}

preview( nie dalo sie skopiowac)
http://screencloud.net/v/zlWh
Go to the top of the page
+Quote Post
trueblue
post 29.03.2014, 14:51:16
Post #6





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

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


No, to jak sam widzisz masz błąd.
Skrypt powinien zwracać JSON, a zwraca doklejony do niego HTML.
W żądaniu Ajax prześlij dodatkową zmienną i w skrypcie sprawdź czy jest, jeśli jest, to drukuj tylko odpowiedź bez formularza, albo jeśli do skryptu nie idą inne zapytanie przez $_POST, to sprawdź $_SERVER['REQUEST_METHOD']=='POST' i zrób warunek jak wyżej.


--------------------
Go to the top of the page
+Quote Post
Cinamicom
post 29.03.2014, 15:02:54
Post #7





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


Usunalem html i tez nie dziala. Wyslana zmienna o wartosci "1" wyswietlilo bez problemu.

Edit

Dodałem ifa z get callback na formularz i odpowiedź.

Screen już bez wyświetlania wysłanej zmiennej przez Ajaxa.

http://screencloud.net/v/txU

Ten post edytował Cinamicom 29.03.2014, 15:15:58
Go to the top of the page
+Quote Post
trueblue
post 29.03.2014, 15:11:17
Post #8





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

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


A co teraz otrzymujesz w odpowiedzi?


--------------------
Go to the top of the page
+Quote Post
Cinamicom
post 29.03.2014, 15:15:17
Post #9





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


Masz screena, wy edytowałem odpowiedź wyżej.
Go to the top of the page
+Quote Post
trueblue
post 29.03.2014, 15:28:43
Post #10





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

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


  1. echo $_GET['callback']."(".$out.")";


--------------------
Go to the top of the page
+Quote Post
Cinamicom
post 29.03.2014, 15:43:03
Post #11





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


Bingo! Dziękuje Ci bardzo. Masz plusiki.

Ale jeszcze jest jeden problem. Nie zalezenie czy dam true czy false. Ajax odbiera mi zawsze jako success.. Jak wejdę w ten podgląd, to zwraca mi "error" true

chociaż wykonało mi jako success.

Ten post edytował Cinamicom 29.03.2014, 15:44:47
Go to the top of the page
+Quote Post
trueblue
post 29.03.2014, 16:06:34
Post #12





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

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


Funkcja success jest wykonywana wtedy kiedy otrzymano odpowiedź od serwera, niezależnie od zawartej treści.
W samej funkcji musisz już sprawdzać jaką odpowiedź otrzymałeś i w zależności od tego przekierowywać na login.php lub nie.


--------------------
Go to the top of the page
+Quote Post
Cinamicom
post 29.03.2014, 16:11:24
Post #13





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


Ale w skrypcie mam if.
if jest ciastko
succes = true
else
error true

I jak ja mam to w funkcji sprawdzic, skoro ify nie dzialaja, bedę miał i to i to.
Go to the top of the page
+Quote Post
trueblue
post 29.03.2014, 16:17:13
Post #14





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

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


Mylisz pojęcia.
Treścią odpowiedzi, którą generujesz w PHP nie decydujesz czy się uruchomi funkcja success czy error.
W success musisz wprowadzić if w zależności co otrzymasz w obiekcie response.


--------------------
Go to the top of the page
+Quote Post
Cinamicom
post 29.03.2014, 16:22:53
Post #15





Grupa: Zarejestrowani
Postów: 117
Pomógł: 0
Dołączył: 8.07.2013

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


Czyli to nie patrzy na moje ify i php.

Czyli zwraca mi error bo jest ostatni. I jak ja mam to sprawdzić co otrzymam? - otrzymam error bo na php nie patrzy.

Ale można zrobić inaczej, zwrócić ciastko, i w js sprawdzić czy jest puste?

Ten post edytował Cinamicom 29.03.2014, 16:31:02
Go to the top of the page
+Quote Post
trueblue
post 29.03.2014, 16:28:24
Post #16





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

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


Na nic nie patrzy ani nie zerka:)

  1. $out = array(
  2. 'status' => 1 jeśli ok, 0 jeśli nie ok
  3. );
  4. $out = json_encode($out);
  5. echo $out;


  1. success: function(response){
  2. if(response.status==1)
  3. zrob coś
  4. else
  5. zrób coś innego
  6. },

Oczywiście możesz zmienić "status" na inną nazwę, chciałem wskazać, że nie ma to powiązania z funkcją w Ajaxie.
Możesz też zmienić odpowiedzi 1 i 0.
W obydwu przypadkach musisz zmienić po stronie PHP i JS.


--------------------
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: 26.04.2024 - 09:47