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

时间:2011-06-30 22:27:18

标签: php json echo

我有一个非常简单的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($ decoding_data-&gt; id)时,echo不显示任何内容,但是当我硬编码$ id = 1时,一切都按预期工作并显示在我的浏览器中。我不太确定如何解决这个问题,因为我的调试器告诉我,当我设置$ id = intval($ decoding_data-&gt; id); $ id等于1.我可以使用这个数字进行算术运算,看起来它的行为与任何整数一样,但由于某种原因,echo和print()不会显示任何内容。

如果有人有任何见解,我真的很感激你的意见。

2 个答案:

答案 0 :(得分:0)

尝试访问这样的值:

$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"
}

答案 1 :(得分:0)

这已经成为安装了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现在可以完美运行。谢谢你的帮助!