Autor Zpráva
quatzael
Profil
Prosím o radu.

Ajaxem mi přijde tento řetězec:

['Item1','Item2','Item3','Item4']

Jak lze v javascriptu z toho udělat skutečné pole:
tzn. tento problém:

var response = "['Item1','Item2','Item3','Item4']"; //string

var actualArray = eval(['Item1','Item2','Item3','Item4']);  // jak udělat správně eval, aby se do promenné acrualArray načetlo skutečné pole jako kdybych zadal přímo var actualArray = ['Item1','Item2','Item3','Item4']; ??

To eval tady hází chybu. Nevím jak to udělat správně.

Prosím o řešení s tím, že mi skutečně přijde ajaxem řetězec: "['Item1','Item2','Item3','Item4']".
Řešení, který obsahují v PHP json_encode() nějak nerespektuje UTF-8..
Alphard
Profil
quatzael:
Řešení, který obsahují v PHP json_encode() nějak nerespektuje UTF-8..
Hmm, možná bych doporučil spíš položit dotaz, jak v PHP vytvořit JSON obsahující utf-8 znaky. A rovnou tam napiš, jakou máš verzi PHP.
quatzael
Profil
Alphard:
No dobře. Verze je PHP Version 5.3.29. Jak tedy vytvořit JSON obsahující utf-8 znaky? A jak to potom v javascriptu správně rozparsovat?


Jo a json version je 1.2.1
Alphard
Profil
quatzael [#3]:
Ta historická verze je nešťastná. Od PHP 5.4 je tady volba JSON_UNESCAPED_UNICODE, která to řeší. V nižších verzích je to potřeba vyřešit nějak uživatelsky. Buď tento workaround php.net/manual/en/function.json-encode.php#112020, nebo si požadovaný JSON naformátovat ručně (pro ploché pole stringů je to triviální).
quatzael
Profil
Alphard:
Ok, klidně ručně.

Stačí takhle:
"{['Item1','Item2','Item3','Item4']}" ?

Nebo to vždycky musí být k něčemu přiřazený?
"{'values' : ['Item1','Item2','Item3','Item4']}"
Alphard
Profil
Stačí jako předtím, jen se pro JSON musí používat uvozovky, ne apostrofy.
alert(JSON.parse('["jedna","dve","tri"]'));
(podporu pro starší prohlížeče si kdyžtak dohledej, sám nevím, jak široce je to podporováno)
quatzael
Profil
Alphard:
Funguje, díky moc!!

Vaše odpověď

Mohlo by se hodit

Neumíte-li správně určit příčinu chyby, vkládejte odkazy na živé ukázky.
Užíváte-li nějakou cizí knihovnu, ukažte odpovídajícím, kde jste ji vzali.

Užitečné odkazy:

Prosím používejte diakritiku a interpunkci.

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