我有一个非常简单的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()不会显示任何内容。
如果有人有任何见解,我真的很感激你的意见。
答案 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现在可以完美运行。谢谢你的帮助!