我有一个非常简单的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现在可以完美工作。谢谢你的帮助!