在JSON中使用和检索PHP变量

时间:2013-10-27 07:26:15

标签: javascript php jquery json

我刚刚开始使用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替换为实际数字。

4 个答案:

答案 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方法一样(如果数据变得更复杂,它会更加灵活!)。