在 JSON 中使用和检索 PHP 变量


Using and retrieving PHP variables within 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。

你应该创建一个PHP数组,然后将其转换为JSON。

例如:

$array = array();
$array['itemId'] = $menuId;
echo json_encode($array);

注意:还有一个json_decode函数,它接受一个JSON字符串并将其转换为PHP。您可能会发现这很有用。

仅供参考,PHP 变量仅用双引号插入,而不是在单引号中插值。所以,你必须做这样的事情:

    $json = "{ '"itemId'":$menuId }";
    echo $json;

请看这里的演示:http://codepad.viper-7.com/CDC0oM

在此示例中:

$menuId = 4;
$json = '{ "itemId":$menuId }';
echo $json;

您已将 JSON 字符串包装在单引号中。PHP 用引号替换值,所以这里不替换该值,你回显的 vale 是

{ "itemId":$menuid }  - this is not valid JSON.

你最好创建一个PHP数组并使用json_encode()来创建SON字符串:

echo json_encode(array("itemId"=>$menuId));

问题是你把你的PHP变量括在单引号(而不是双引号)中,所以PHP不会在字符串中寻找要替换的变量。

所以这应该有效:

$json = "{ '"itemId'": $menuId}";

以及Cezary Wojcik建议的json_encode方法(如果数据变得更加复杂,它将更加灵活!