Echo不会显示从json_decode()中检索到的任何值


Echo will not display any value retrieved from json_decode()

我有一个非常简单的JSON对象,看起来如下:

var data =
{
    "id" : 1
}

然后我用PHP解码:

$decoded_data = json_decode(stripslashes($_POST['data']));  //this works
$id = intval($decoded_data->id); //in my debugger this is equal to 1 as expected

然后,我将$id变量传递到一个函数中,该函数查询数据库并返回一组"子活动"

$sub_activities = alp_get_all_sub_activities($id);  //this function works as expected and returns the correct result set

现在我有了指定$id的子活动,我尝试使用循环访问它们:

foreach ($sub_activities as $activity) {
    echo __("<td><a id='" . $activity->id . "' href='' title='Activity'><div style=' border: 3px solid purple; width: 200px; height: 200px; overflow: scroll;'>" . $activity->name . "<br />" . $activity->id . "<br />" . $activity->description) . "</div></a></td>";
}

我的问题是:当$id设置为intval($decoded_data->id)时,echo什么都不显示,但当我硬编码$id=1时,一切都按预期工作,并在浏览器中显示。我不太确定如何解决这个问题,因为我的调试器告诉我,当我设置$id=intval($decoded_data->id)时;$id等于1。我可以用这个数字做算术运算,它的行为似乎和任何整数一样,但由于某种原因,echo和print()不会显示任何内容。

如果有人有任何见解,我将非常感谢你的意见。

尝试访问如下值:

$id = $decoded_data->{'id'};
$id = (int)$decoded_data->{'id'};
$id = intval($decoded_data->{'id'});
$id = (int)$decoded_data->id;

取而代之的是:

$id = intval($decoded_data->id);

仔细想想,JSON是否将整数视为布尔值?你能试试吗

var data =
{
    "id" : "1"
}

这是安装了Buddypress的Wordpress中ajax的问题。Buddypress出于自身目的将请求发送到其他地方。我刚刚创建了自己的javascript名称空间对象,并重新路由了数据。以下是帮助我解决这个问题的教程:

http://codex.wordpress.org/AJAX_in_Plugins

http://www.garyc40.com/2010/03/5-tips-for-using-ajax-in-wordpress/

JSON现在可以完美工作。谢谢你的帮助!