json_encode в сочетании с $ _GET (PHP & Javascript) - PullRequest
0 голосов
/ 10 июля 2011

Мне нужно передать массив JSON в URL веб-страницы, чтобы я сделал

$url = 'page.php?id=' . json_encode($array);

, который стал

$url = 'pages.php?id=["1", "2", "3"]';

А затем внутри page.php, который в основном представляет собой код JavaScriptdo

var foo = <?php $_GET['id']; ?>

Но foo вместо того, чтобы быть массивом, подобным ["1", "2", "3"], это всего лишь [.

Почему это?

Кроме того, лучше сделать: url.php?id=value или url.php?id="value" ??

Ответы [ 2 ]

4 голосов
/ 10 июля 2011

Вы забыли urlencode() это.

$url = 'page.php?id=' . urlencode(json_encode($array));

И не забудьте json_decode(), когда оно вернется.

0 голосов
/ 10 июля 2011

Из любопытства вы должны передать его в виде строки json_encoded?

Возможно, вы могли бы передать его в виде массива

page.php?id[]=1&id[]=2&id[]=3 

тогда ваш код page.php будет выглядеть так:

echo json_encode($_GET['id']);

Я бы также проверил наличие неверных данных, используя метод белого списка, если вы передаете идентификаторы страниц.

$safe = array('1','2','3');
$id = $_GET['id'];
foreach($id as $value){
 if(!in_array($value, $safe)){
    echo "Sry, data not valid";
    exit;
 }
}
echo json_encode($id);
...