Autor | Zpráva | ||
---|---|---|---|
Petík Profil * |
#1 · Zasláno: 2. 2. 2011, 15:02:38
Ahoj,
potřeboval bych poradit ohledně uvozovek v JSON. VYsvětlím můj problém nejlépe na praktické ukázce: Tady je funkce kterou volam klikem: function ajax_login(){ var login_val=$("#name").val(); var pass_val=$("#pass").val(); $("#change").html('<img class="loader" src="./design/images/ajax-loader.gif" alt="loading">'); $.getJSON("./login.php", {login:login_val, pass:pass_val }, function(data){ $("#change").html(data.change); }) } a zde je zpracování login.php public function pLogin() { $login = $_GET["login"]; $pass = $_GET["pass"]; $condit ="((name ='$login')AND(pass ='$pass'))"; $sql = " SELECT name, pass FROM users WHERE $condit "; $result = mysql_query($sql); if(mysql_num_rows($result) == 1) { $log = ' <img class="icon" src="./design/images/unlock.png" alt="login-unlock"> <h2>Přihlášení do systému</h2> Jste úspěšně přihlášen jako <strong>' .$login .'</strong>'; echo '({"change": "' .$log .'", "dalsi": "bal bla bla"})'; } else { echo '!!! Chybné přihlášení !!! <br>'; echo mysql_error(); } } Ale at dělám co dělám prohlížeči se nelíbí, že mu tam do toho JSON peru úvozovky. Když použiji jednoduchý text v $log tak vše funguje, ale ať jsem to zuvozovkoval jakkoliv ( /", " ,' ... ) tak se mi nikdy text neukázal. Pls nevíte někdo jak na to ? Jesli neexistuje nějakej trýček ? Četl jsem něco okolo jednoduchejch kulatejch závorkách, že se to má uzavírat, s nima jsem to taky zkoušel ... ale k ničemu jsem se nedoskoušel. Za rady předem moc díky ;-) Petik |
||
Petík Profil * |
#2 · Zasláno: 2. 2. 2011, 15:10:13
sorry za pravopis ... psáno při nervovým vytížení ;-)
|
||
Witiko Profil |
#3 · Zasláno: 2. 2. 2011, 15:18:44 · Upravil/a: Witiko
Petík:
Možná escapovat jak závorky tak i backslash? \\\" Hádám. Pokud nechceš, abych hádal, hoď nám sem, co login.php navrací při použití uvozovek v čirém textu. :-) |
||
__construct Profil |
#4 · Zasláno: 2. 2. 2011, 15:18:48
Petík:
Skús použiť vstavanú PHP funkciu json_encode()
|
||
Petík Profil * |
#5 · Zasláno: 2. 2. 2011, 17:07:40
S tím json_encode:
({"change": ""\r\n\t\t\t<img class=\"icon\" src=\".\/design\/images\/unlock.png\" alt=\"login-unlock\"> \r\n\t\t\t<h2>P\u0159ihl\u00e1\u0161en\u00ed do syst\u00e9mu<\/h2>\r\n\t\t\tJste \u00fasp\u011b\u0161n\u011b p\u0159ihl\u00e1\u0161en jako <strong>petr-klimes<\/strong>"", "dalsi": "bal bla bla"}) jen tak: ({"change": " <img class="icon" src="./design/images/unlock.png" alt="login-unlock"> <h2>Přihlášení do systému</h2> Jste úspěšně přihlášen jako <strong>petr-klimes</strong>", "dalsi": "bal bla bla"}) unslas: {"change": " <img class=/"icon/" src=/".//design//images//unlock.png//" alt=/"login-unlock/"> <h2>Přihlášení do systému</h2> Jste úspěšně přihlášen jako <strong>petr-klimes</strong>", "dalsi": "bal bla bla"} Když tam dám jenom <h2>dafdsa</h2> tak to funguje : -> z toho se domnívám, že s lomítkama to problém mít nebude {"change": "<h2>Přihlášení do systému</h2>", "dalsi": "bal bla bla"} jsem z toho jelen ;-), btw: nebo špatně používám tu funkci json_encode() ??? Dal jsem tam jenom : echo '{"change": "' .json_encode($log) .'", "dalsi": "bal bla bla"}'; |
||
Chamurappi Profil |
#6 · Zasláno: 2. 2. 2011, 17:16:32 · Upravil/a: Chamurappi
Reaguji na Petíka:
„btw: nebo špatně používám tu funkci json_encode() ???“ Ano. Je to zjevné z toho, cos předvedl, že vygenerovala. Zkus přemýšlet nebo si přečíst manuál k ní. Reaguji na Witika: „Možná escapovat jak závorky tak i backslash?“ Je zapotřebí escapovat zpětná lomítka, uvozovky a zejména konce řádků — buď je zapsat jako \n , nebo před ně jen strčit zpětné lomítko.
|
||
Petík Profil * |
#7 · Zasláno: 2. 2. 2011, 22:28:05
Díky. Sice s json_encode() jsem dobojoval ... ani zaboha to nedělalo co jsem chtěl. Tak jsem to obešel.
udělal sjem si metodu: public function fJsonVal($txt) { $old = array('/', '"'); $new = array('\/', '\"'); $text = str_replace($old , $new , $txt); return $text; } Udělal jsem to na jeden řádek a zde vytvořenou metodu použil: { $log = '<img class="icon" src="./design/images/unlock.png" alt="unlock">'; $log .= '<h2>Přihlášení do systému</h2>'; $log .= 'Jste úspěšně přihlášen jako <strong>' .$login .'</strong>'; echo '{"change": "' .$this->fJsonVal($log) .'", "dalsi": "bal bla bla"}'; } Funguje to ;-) a tohle to vyhodí: {"change": "<img class=\"icon\" src=\".\/design\/images\/unlock.png\" alt=\"unlock\"><h2>Přihlášení do systému<\/h2>Jste úspěšně přihlášen jako <strong>petr-klimes<\/strong>", "dalsi": "bal bla bla"} |
||
Časová prodleva: 9 dní
|
|||
Petík Profil * |
#8 · Zasláno: 12. 2. 2011, 00:51:29
Ahoj, nakonec jsem to ještě upravil. Kdyby někdo potřeboval:
$MyArr = array ('status'=>$stat,'login'=>$log, 'menu'=>$menu); echo json_encode($MyArr); Když jsem proměný naházel do pole a pak převedl funkcí json_encode, nebyl s tím žádný problém ;-) GL a HF |
||
Časová prodleva: 13 let
|
0