Проблема получения объекта JSON
добрый день всем! Подскажите пожалуйста. Есть массив из базы данных в экшене. Я его возращаю так return json_encode($order); В аякс запросе пытаюсь по человечески его получить, а выходит следуюющее.
[{}, {}, {}, {}, {}, {}] 0: {} 1: {} 2: {} 3: {} 4: {} 5: {} Если вывести в alert-е, то получаю [Object object, object object] и т.д. Не понимаю на каком этапе теряются мои данные. Вот сам запрос $('.order').click(function(){ var number = $('#number').text(); $.ajax({ url: '/adm/record/order/', dataType: 'json', data: "card=" + number, success: function(html){ var res = eval("(" + html + ")"); alert(res); //$('#result').text(data); } }); }); |
Ребят, ну кто нибудь отзовитесь. Не допираю в чем трабла
|
JSON, это не объект, это формат описания данных и представляет собой строку. А вот указание этого типа данных в запросе будет означать, что по окончании запроса эта строка уже будет преобразована в объект, и в связи с тем, что в JS нет ассоциативных массивов, этот массив переданный сервером, на клиенте будет являться массивом объектов, который и описывается в JS как:
[{свойство : значение, свойство : значение, ...}, {...}, {}, {}, {}, {}] где свойство, это ключ ассоциативного массива. Теперь осталось произвести с объектом html некие операции по извлечению этих данных в цикле. А var res = eval("(" + html + ")"); alert(res); выбросить, и просмотреть на клиенте содержимое объекта html можно так - console.log(html) |
я раньше работал только с получением строки, а сейчас именно надо преобразование этой строки в объект. Не понимаю как мне сейчас к эти данным обратиться. Можно пример?
|
Цитата:
Цитата:
|
разумеется я знаю структуру. Просто с json я ранее не работал. В пхп у меня бы получилось так:
foreach ($order as $item){ echo $item->name.'<br/>'; echo $item->lastname.'<br/>'; } и т.д. А как сейчас их достать я не понимаю. Может дадите реально хорошую ссылку описывающую именно работу(получение данных) пошагово |
Ну если echo $item->name, то надеюсь понятно и то, что данные из базы будут выведены последовательно в длиииииинный столбик, что именно это и требуется сделать на клиенте?
|
Мне просто нужно отобразить данные авторизованного юзера в его кабинете и все. Сейчас я просто хочу их получить. А то Object object клиенту ни о чем не скажут ;)
|
Цитата:
Если одного пользователя, то объект на клиенте должен быть примерно таким (имена свойств пишу условно): {"name" : "значение", "birth" : "значение", etc....} А то что вы привели, это массив объектов, то есть фактически: [{"name" : "значение", "birth" : "значение", etc....}, {"name" : "значение", "birth" : "значение", etc....}, {"name" : "значение", "birth" : "значение", etc....}, ..... etc] Что-то не то вы делаете уже на сервере, либо не описываете свои данные так, чтобы можно было понять чего хотите. |
laimas. Смотрите давайте так:
Вот это я получаю на сервере. <pre>Array ( [0] => app\models\LogBonus Object ( [_attributes:yii\db\BaseActiveRecord:private] => Array ( [id_log_bonus] => 1913 [card] => 19034233 [operator] => 7 [operation] => inflow [operator_cancel] => 0 [dat_oper] => 2012-09-26 13:20:00 [confirm] => 1 [oper] => Оплата по Заказ наряд 18930 (26.09.12) / 7079 [oper_summa] => 7079.00 [persent] => 3 [summ] => 212.00 [confirmed] => 2012-09-26 13:20:00 [project] => 4 [bad] => 0 [verify] => 3419 ) [_oldAttributes:yii\db\BaseActiveRecord:private] => Array ( [id_log_bonus] => 1913 [card] => 19034233 [operator] => 7 [operation] => inflow [operator_cancel] => 0 [dat_oper] => 2012-09-26 13:20:00 [confirm] => 1 [oper] => Оплата по Заказ наряд 18930 (26.09.12) / 7079 [oper_summa] => 7079.00 [persent] => 3 [summ] => 212.00 [confirmed] => 2012-09-26 13:20:00 [project] => 4 [bad] => 0 [verify] => 3419 ) [_related:yii\db\BaseActiveRecord:private] => Array ( ) [_errors:yii\base\Model:private] => [_validators:yii\base\Model:private] => [_scenario:yii\base\Model:private] => default [_events:yii\base\Component:private] => Array ( ) [_behaviors:yii\base\Component:private] => Array ( ) ) [1] => app\models\LogBonus Object ( [_attributes:yii\db\BaseActiveRecord:private] => Array ( [id_log_bonus] => 24831 [card] => 19034233 [operator] => 7 [operation] => outflow [operator_cancel] => 0 [dat_oper] => 2013-10-19 12:35:55 [confirm] => 1 [oper] => Оплата по Заказ наряд 27303 (19.10.13) / 6399 [oper_summa] => 210.00 [persent] => 0 [summ] => 210.00 [confirmed] => 2013-10-19 12:35:55 [project] => 4 [bad] => 0 [verify] => ) [_oldAttributes:yii\db\BaseActiveRecord:private] => Array ( [id_log_bonus] => 24831 [card] => 19034233 [operator] => 7 [operation] => outflow [operator_cancel] => 0 [dat_oper] => 2013-10-19 12:35:55 [confirm] => 1 [oper] => Оплата по Заказ наряд 27303 (19.10.13) / 6399 [oper_summa] => 210.00 [persent] => 0 [summ] => 210.00 [confirmed] => 2013-10-19 12:35:55 [project] => 4 [bad] => 0 [verify] => ) [_related:yii\db\BaseActiveRecord:private] => Array ( ) [_errors:yii\base\Model:private] => [_validators:yii\base\Model:private] => [_scenario:yii\base\Model:private] => default [_events:yii\base\Component:private] => Array ( ) [_behaviors:yii\base\Component:private] => Array ( ) ) |
Часовой пояс GMT +3, время: 23:29. |