1

我刚刚开始使用 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

4 回答 4

4

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

例如:

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

注意:还有一个json_decode函数可以接收 JSON 字符串并将其转换为 PHP。你可能会觉得这很有用。

于 2013-10-27T07:29:49.383 回答
1

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

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

请在此处查看演示:http: //codepad.viper-7.com/CDC0oM

于 2013-10-27T07:32:22.803 回答
1

在此示例中:

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

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

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

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

echo json_encode(array("itemId"=>$menuId));
于 2013-10-27T07:36:36.157 回答
0

问题是您已将 PHP 变量包含在单引号(而不是双引号)中,因此 PHP 不会在字符串中查找要替换的变量。

所以这应该工作:

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

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

于 2013-10-27T07:32:27.310 回答