Autor | Zpráva | ||
---|---|---|---|
Suta Profil |
Po přehrání na server mi přestala fungovat část kódu. Na localhostu bez problému. Zjistil jsem následující:
1. Pomocí knihovny jQuery odesílám data ve formátu JSON, data jsou v php přístupná pod vlastností data, příklad: // data odesílaná na server {"idArray":["1_1","2_2"]} // uložení v php do objektu $POST_DATA = json_decode($_POST["data"]); Nyní po testovacím vypsání dat do databáze přijatá data $_POST["data"] nejsou ve tvaru stringu '{"idArray":["1_1","2_2"]}', ale jsou ve tvaru {"idArray":["1_1","2_2"]}. V této chvíli nevím, zda-li přepsání úvozovek (a jiných znaků) dělá metoda jQuery a již takto upravená data (např. místo úvozovek ") odesílá na server , nebo zda-li se znaky automaticky překódují při vytáhnutí z POSTu. Druhá věc pak je záhada, proč metoda json_decode($_POST["data"]) v php mi na localhostu vrátí správně array o dvou polích, na serveru mi však ta samá metoda s daty uvedenými výše pole nevrátí.
Přemýšlím tedy nad správným vyřešením, zdá se že metoda neumí pracovat s překódovanými znaky ("), nicméně zřejmě se tak jedná jen na serveru, na localhostu si s tím zřejmě php poradí... :( Tápu tedy nad použitím htmlspecialchars_decode(), tuším však že je to zcestná cesta. Díky za případné rady. |
||
Majkl578 Profil |
#2 · Zasláno: 1. 3. 2012, 13:37:25
Ve Firebugu se můžeš v panelu Síť podívat, v jakém formátu se data posílají na server, jestli správně nebo už poškozená. Na výsledku tohoto bych založil další postup, tj. jestli ladit jQuery nebo PHP.
|
||
Suta Profil |
Majkl578:
Před minutou jsem našel řešení, přesto díky. Řešení viz vysvětlení níže: <?php // first use encodeURIComponent on javascript to encode the string // receive json string and prepare it to json_decode $jsonStr = stripslashes ($_POST['action']); // decode to php object $json = json_decode ($jsonStr); // $json is now a php object ?> Nyní pouze nevím, z jakého důvodu json_decode bez stripslashes() funguje správně na localhostu, ale na ostrém serveru ne. Podstatné však je to, že se stripslashes funguje. |
||
Mike8748 Profil |
#4 · Zasláno: 1. 3. 2012, 13:57:00
Suta:
„bez stripslashes() funguje správně na localhostu, ale na ostrém serveru ne“ to souvisi s http://cz2.php.net/magic_quotes, které na localhostu máš vypnuté, na serveru zapnuté |
||
Suta Profil |
#5 · Zasláno: 1. 3. 2012, 14:28:32
Mike8748:
Aha, díky moc za upřesnění. Tak to bylo tímto. |
||
Časová prodleva: 12 let
|
0