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
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
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
Mike8748:
Aha, díky moc za upřesnění. Tak to bylo tímto.

Vaše odpověď

Mohlo by se hodit


Prosím používejte diakritiku a interpunkci.

Ochrana proti spamu. Napište prosím číslo dvě-sta čtyřicet-sedm:

0