我刚刚开始使用JSON在页面之间抛出信息,我根本无法弄清楚这一点。
基本上,我有一个页面使用jquery getJSON从另一个页面获取一些JSON数据。但PHP变量不会/不能被必要的内容替换。
这是jquery脚本(我相信工作正常)
$.getJSON("./menu-controller.php", { editId: getEditId, getEditInfo: true },function(data) {
console.log(data);
var id = data.itemId;
alert(id);
});
在其他页面上使用此代码时,我可以正常工作
$json = '{ "itemId":"4" }';
echo $json;
然而,如果我使用它,那么它将不起作用
$menuId = 4;
$json = '{ "itemId":$menuId }';
echo $json;
所以我的问题是,如何让$ menuId真正用数字代替自己并正确回到另一页?
我已经尝试搞乱报价并重新安排报价4个小时。它要么出现错误,要么不会将$ menuId替换为实际数字。
答案 0 :(得分:4)
您应该改为创建PHP数组,然后将其转换为JSON。
例如:
$array = array();
$array['itemId'] = $menuId;
echo json_encode($array);
注意:还有一个json_decode
函数,它接受一个JSON字符串并将其转换为PHP。你可能会发现它很有用。
答案 1 :(得分:1)
仅供参考,PHP变量仅以双引号插值,而不是单引号。所以,你要做这样的事情:
$json = "{ \"itemId\":$menuId }";
echo $json;
请参阅此处的演示:http://codepad.viper-7.com/CDC0oM
答案 2 :(得分:1)
在此示例中:
$menuId = 4;
$json = '{ "itemId":$menuId }';
echo $json;
您已将JSON字符串包装在单引号中。 PHP替换 double 引号中的值,因此此处的值不会被替换,并且您回显的值是
{ "itemId":$menuid } - this is not valid JSON.
最好创建一个PHP数组并使用json_encode()
创建SON字符串:
echo json_encode(array("itemId"=>$menuId));
答案 3 :(得分:0)
问题是你已经将PHP变量包含在单引号(而不是双引号)中,因此PHP不会在字符串中查找要替换的变量。
所以这应该有效:
$json = "{ \"itemId\": $menuId}";
与Cezary Wojcik建议的json_encode方法一样(如果数据变得更复杂,它会更加灵活!)。