简体   繁体   English

json_encode 结合 $_GET (PHP & Javascript)

[英]json_encode combined with $_GET (PHP & Javascript)

I need to pass a JSON array into a webpage URL so I do我需要将 JSON 数组传递到网页 URL 所以我做

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

which becames变成了

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

And then, inside page.php which is basically Javascript code i do然后,在page.php里面,这基本上是我做的 Javascript 代码

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

But foo instead of being an array like ["1", "2", "3"] it's only [ .但是foo而不是像["1", "2", "3"]这样的数组,它只是[

Why is this?为什么是这样?

Also, is it better to do: url.php?id=value or url.php?id="value" ??另外,做得更好: url.php?id=value url.php?id="value"

You forgot to urlencode() it.你忘了urlencode()它。

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

And don't forget to json_decode() it when it gets back.当它回来时不要忘记json_decode()它。

Out of curiosity do you have to pass it as a json_encoded string?出于好奇,您是否必须将其作为 json_encoded 字符串传递?

Perhaps you could pass it as an array也许您可以将其作为数组传递

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

then your page.php code would look like this:那么您的 page.php 代码将如下所示:

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

I would also check for bad data using a white list approach if your passing in page ids.如果您传入页面 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);

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM