[英]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.