Эхо не будет отображать любое значение, полученное из json_decode () - PullRequest
2 голосов
/ 01 июля 2011

У меня есть чрезвычайно простой объект 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 Activity»

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

Моя проблема в том, что echo ничего не отображает, когда для $ id установлено значение intval ($ decoded_data-> id), но когда я жестко кодирую $ id = 1, тогда все работает, как ожидалось, и отображается в моем браузере. Я не совсем уверен, как решить эту проблему, потому что мой отладчик говорит мне, что когда я устанавливаю $ id = intval ($ decoded_data-> id); что $ id равно 1. Я могу сделать арифметику с этим числом, и похоже, что оно ведет себя как любое целое число, но по какой-то причине echo и print () ничего не отобразят.

Если у кого-то есть понимание, я буду очень признателен за ваш вклад.

Ответы [ 2 ]

0 голосов
/ 21 июля 2011

Это оказалось проблемой с ajax в Wordpress с установленной Buddypress.Buddypress отправлял запрос в другое место для своих собственных целей.Я просто создал свой собственный объект пространства имен javascript и перенаправил данные.Вот учебники, которые помогли мне понять это:

http://codex.wordpress.org/AJAX_in_Plugins

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

JSON теперь работает отлично.Спасибо за помощь!

0 голосов
/ 01 июля 2011

попробуйте получить доступ к значению, как это:

$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"
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...