Форум программистов, компьютерный форум, киберфорум
jQuery
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.88/34: Рейтинг темы: голосов - 34, средняя оценка - 4.88
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209

[Object object] вместо перевода JSON массива

12.01.2019, 22:45. Показов 7306. Ответов 8
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Всем привет. ДАНО:
Есть массив в php куда я запихал все строки таблицы mysql, а затем перевел их в JSON
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
$query = mysql_query("SELECT * FROM `OrdL`");
        if (mysql_errno()) 
        {
                $error = "MySQL error ".mysql_errno().": ".mysql_error(); 
                die();
        }
        $returnedarr = array();
        while($row = mysql_fetch_array($query))
        {
                array_push($returnedarr, $row);
        }
        $result = json_encode($returnedarr);
        echo $result;
Есть функция в JS, которая с помощью аджакса обращается к php файлу, и от туда получает упакованный в JSON мульти-массив. Далее эта функция должна перевести полученный массив с JSON формата в JS формат. Тут и появляется проблема... Вот так выглядит код:

JavaScript
1
2
3
4
5
6
7
8
9
10
11
12
$.ajax({type: 'post', url: '/phpengine.php', data: {'showallord':true},
                                                success: function (data)
                                                {
                                                        alert(data); // выводит адекватный массив JSON. Визуально никаких проблем.
                                                        var parsed = JSON.parse(data);
                                                        alert(parsed);
                                                        for(var x in parsed){
                                                                pos_info.push(parsed[x]);
                                                        }
                                                        alert(pos_info);
                                                }
                                        });
Так вот, функция действительно получает упакованный JSON массив, однако вместо того, что бы превратить его обратно массив, но уже JS формата, она превращает 4 массива внутри (их 4, в соответствии с строками таблицы БД) в черт пойми что
Code
1
[object Object],[object Object],[object Object],[object Object],[object Object]
Самое забавное то, что если добавить в php часть строку аля print_r(json_decode($result)); , то никаких проблем не будет, и я получу свой php массив.

Добавлено через 2 минуты
Пока создавал тему обнаружил что во всех массивах присутствует странный ключ
Code
1
Array ( [0] => stdClass Object
Понятия не имею от куда появился этот ключ... В БД из данных только строки, и никаких объектов там нету.

Ребята, выручайте! Целый день потратил, так ничего и не придумал...

Добавлено через 1 час 24 минуты
С помощью не абы каких танцев с бубнами я смог вырезать все "stdClass Object" с массивов, и все волшебным образом зарабоитало. Кто-нибудь знает что это такое?
0
Лучшие ответы (1)
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
12.01.2019, 22:45
Ответы с готовыми решениями:

Uncaught TypeError: Object [object Object] has no method
Всем привет. Я новичок в этой сфере. у меня возникла ошибка в консоли при добавлении карусели на сайт: "Uncaught TypeError: Object ...

Ajax возвращает [object Object]
Здравствуйте. Есть сайт, доступа к серверной части которого я не имею. Отправлю аяксом вот так: $.ajax({ ...

Object [object Object] has no method
сем привет. Я новичок в этой сфере. у меня возникла ошибка в консоли при добавлении карусели на сайт: "Uncaught TypeError: Object ...

8
Эксперт JS
2037 / 1096 / 409
Регистрация: 29.04.2016
Сообщений: 2,625
12.01.2019, 22:49
Цитата Сообщение от Dave_ Посмотреть сообщение
Кто-нибудь знает что это такое?
Тута
 Комментарий модератора 

Правила форума
3. Правила поведения на форуме.
3.3 Не отсылайте других пользователей в поиск и избегайте ссылок на поисковые системы (Google, Yandex и др.). Самостоятельно найдите ответ на вопрос и разместите его на форуме.
0
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
14.01.2019, 10:13
я передаю заголовок чтобы на стороне клиента сразу в правильном формате массив выходил
PHP
1
2
3
header("Content-type: application/json; charset=utf-8");
$json = json_encode($go);
echo $json;
попробуй через pdo сделать, там на выходе сразу массив правильный
PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
    $user = 'root';
    $pass = 'root';
    try {
        $dbh = new PDO('mysql:host=localhost;dbname=YOUR_DBNAME;charset=utf8', $user, $pass);
        $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
        $result = $dbh->query("SELECT * FROM `OrdL`");
        $result->setFetchMode(PDO::FETCH_ASSOC);
    } catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
    }
    header("Content-type: application/json; charset=utf-8");
    $json = json_encode($result);
    echo $json;
1
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
14.01.2019, 18:41  [ТС]
Уф, выдает вот такую ?ошибку?
Code
1
{"queryString":"SELECT * FROM `OrdL`"}
Кажется, все указывал правильно... Не забыл поменять хост и дбнэйм. -_-
Попробовал аналогичным способом (с указанием на джсон), но все еще [Object object] -_- Правда в выводе уже нету кода Array ( [0] => stdClass Object. Понятия не имею что делать...
Вот такой у меня получается JSON

JSON
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
array (
  0 => 
  array (
    0 => '1',
    'id' => '1',
    1 => '0',
    'OrdReaded' => '0',
    2 => 'Test1',
    'OrdAccName' => 'Test1',
    3 => '09.01.2019',
    'OrdDate' => '09.01.2019',
    4 => 'Нагуглил, что для обнуления AUTO_INCREMENT нужен следующий запрос:
 
ALTER TABLE <имя таблицы> AUTO_INCREMENT=0
Как этот запрос написать в Kohana при помощи модуля ORM?',
    'OrdText' => 'Нагуглил, что для обнуления AUTO_INCREMENT нужен следующий запрос:
 
ALTER TABLE <имя таблицы> AUTO_INCREMENT=0
Как этот запрос написать в Kohana при помощи модуля ORM?',
  ),
  1 => 
  array (
    0 => '2',
    'id' => '2',
    1 => '0',
    'OrdReaded' => '0',
    2 => 'Test2',
    'OrdAccName' => 'Test2',
    3 => '12.01.2019',
    'OrdDate' => '12.01.2019',
    4 => 'Трататата трататата мы везем с собой пакет?',
    'OrdText' => 'Трататата трататата мы везем с собой пакет?',
  ),
  2 => 
  array (
    0 => '3',
    'id' => '3',
    1 => '0',
    'OrdReaded' => '0',
    2 => 'Test3',
    'OrdAccName' => 'Test3',
    3 => '15.01.2019',
    'OrdDate' => '15.01.2019',
    4 => 'А если массивов будет аж 3 штуки? Будет-ли дублировать????',
    'OrdText' => 'А если массивов будет аж 3 штуки? Будет-ли дублировать????',
  ),
)
НО, опять таки [Object object].
0
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
14.01.2019, 21:31
больше похоже не на json, а на print_r
1
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
14.01.2019, 23:48  [ТС]
Уф, Упс) Не то вставил)
JSON
1
[{"0":"1","id":"1","1":"0","OrdReaded":"0","2":"Test1","OrdAccName":"Test1","3":"09.01.2019","OrdDate":"09.01.2019","4":"\u041d\u0430\u0433\u0443\u0433\u043b\u0438\u043b, \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u044f AUTO_INCREMENT \u043d\u0443\u0436\u0435\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441:\n\nALTER TABLE <\u0438\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b> AUTO_INCREMENT=0\n\u041a\u0430\u043a \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 Kohana \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u043e\u0434\u0443\u043b\u044f ORM?","OrdText":"\u041d\u0430\u0433\u0443\u0433\u043b\u0438\u043b, \u0447\u0442\u043e \u0434\u043b\u044f \u043e\u0431\u043d\u0443\u043b\u0435\u043d\u0438\u044f AUTO_INCREMENT \u043d\u0443\u0436\u0435\u043d \u0441\u043b\u0435\u0434\u0443\u044e\u0449\u0438\u0439 \u0437\u0430\u043f\u0440\u043e\u0441:\n\nALTER TABLE <\u0438\u043c\u044f \u0442\u0430\u0431\u043b\u0438\u0446\u044b> AUTO_INCREMENT=0\n\u041a\u0430\u043a \u044d\u0442\u043e\u0442 \u0437\u0430\u043f\u0440\u043e\u0441 \u043d\u0430\u043f\u0438\u0441\u0430\u0442\u044c \u0432 Kohana \u043f\u0440\u0438 \u043f\u043e\u043c\u043e\u0449\u0438 \u043c\u043e\u0434\u0443\u043b\u044f ORM?"},{"0":"2","id":"2","1":"0","OrdReaded":"0","2":"Test2","OrdAccName":"Test2","3":"12.01.2019","OrdDate":"12.01.2019","4":"\u0422\u0440\u0430\u0442\u0430\u0442\u0430\u0442\u0430 \u0442\u0440\u0430\u0442\u0430\u0442\u0430\u0442\u0430 \u043c\u044b \u0432\u0435\u0437\u0435\u043c \u0441 \u0441\u043e\u0431\u043e\u0439 \u043f\u0430\u043a\u0435\u0442?","OrdText":"\u0422\u0440\u0430\u0442\u0430\u0442\u0430\u0442\u0430 \u0442\u0440\u0430\u0442\u0430\u0442\u0430\u0442\u0430 \u043c\u044b \u0432\u0435\u0437\u0435\u043c \u0441 \u0441\u043e\u0431\u043e\u0439 \u043f\u0430\u043a\u0435\u0442?"},{"0":"3","id":"3","1":"0","OrdReaded":"0","2":"Test3","OrdAccName":"Test3","3":"15.01.2019","OrdDate":"15.01.2019","4":"\u0410 \u0435\u0441\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0430\u0436 3 \u0448\u0442\u0443\u043a\u0438? \u0411\u0443\u0434\u0435\u0442-\u043b\u0438 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c????","OrdText":"\u0410 \u0435\u0441\u043b\u0438 \u043c\u0430\u0441\u0441\u0438\u0432\u043e\u0432 \u0431\u0443\u0434\u0435\u0442 \u0430\u0436 3 \u0448\u0442\u0443\u043a\u0438? \u0411\u0443\u0434\u0435\u0442-\u043b\u0438 \u0434\u0443\u0431\u043b\u0438\u0440\u043e\u0432\u0430\u0442\u044c????"}]
Добавлено через 22 минуты
В общем: подключение к ПДО я наладил, правда мой сонный мозг отказывается понять в чем разница, но смена способа сработала. Теперь мой код выглядит так:

PHP
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
if(isset($_POST['showallslug'])) {
$dsn = 'mysql:dbname=1630943_dbtest;host=fdb7.freehostingeu.com';
 
        try {
            $dbh = new PDO($dsn, $user, $password, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
        } catch (PDOException $e) {
            echo 'Подключение не удалось: ' . $e->getMessage();
        }
        
        $returnedarr = array();
        
        foreach($dbh->query('SELECT * from OrdL') as $row) {
                array_push($returnedarr, $row);
        }
        header("Content-type: application/json; charset=utf-8");
        $result = json_encode($returnedarr);
        echo $result;
}
JS реакция:
JavaScript
1
2
3
4
5
6
$.ajax({type: 'post', url: '/phpengine.php', data: {'showallslug':true},
                success: function (data)
                {
                           alert(data);
                }
});
Code
1
[object Object],[object Object],[object Object]
Кстати, должен заметить: чем дальше в лес, тем больше сосен - чем больше правок в коде, тем хуже ситуация, ведь раньше алерт дата показывало в формате json без приколов с обжектом.

Добавлено через 3 минуты
Если попробовать прочитать этот самый json через декод, то получаю ошибку в консоль:
Code
1
2
3
4
5
6
7
Uncaught SyntaxError: Unexpected token o in JSON at position 1
    at JSON.parse (<anonymous>)
    at Object.success (form.php:106)
    at f (jquery-1.9.0.min.js:1)
    at Object.fireWith [as resolveWith] (jquery-1.9.0.min.js:1)
    at r (jquery-1.9.0.min.js:3)
    at XMLHttpRequest.r (jquery-1.9.0.min.js:3)
0
the hardway first
Эксперт JS
 Аватар для j2FunOnly
2475 / 1847 / 910
Регистрация: 05.06.2015
Сообщений: 3,610
15.01.2019, 09:57
Dave_, jQuery у вас сам переведет строку JSON в объект / массив, отсюда и ошибка когда вы этот полученный массив пытаетесь второй раз преобразовать с помощью JSON.parse().

То что вы видите при выводе alert - это стандартное поведение объектов, т. к. перед выводом они приводятся к строке методом .toString(). Для отладки выводите в консоль браузера.
1
 Аватар для Уф
890 / 725 / 447
Регистрация: 13.07.2015
Сообщений: 2,277
15.01.2019, 10:26
Лучший ответ Сообщение было отмечено Dave_ как решение

Решение

ну это канеш кек, получить нормальный обьект и алертом его выводить, разница PDO в том что ты можешь безопасно и очень удобно вставлять параметры в запросы, например
PHP
1
2
3
4
5
$dbh = new PDO('mysql:host=localhost;dbname=YOUR_DBNAME;charset=utf8', $user, $pass);
        $dbh->setAttribute( PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION );
    $sth = $dbh->prepare("SELECT * FROM whlist_full OFFSET ? LIMIT ?");
    $sth->execute(array('200','200'));
        $result = $sth->fetchAll();
вместо вопросов подставятся числа
для вывода результата в таблицу удобно использовать плагин datatables, там можно указать названия столбцов и сразу увидеть результат с работающим поиском и сортировкой, попробуй такой код
PHP/HTML
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
<html>
<head>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.12.4/jquery.min.js"></script>
<link rel="stylesheet" type="text/css" href="//cdn.datatables.net/1.10.19/css/jquery.dataTables.min.css">
<script type="text/javascript" src="//cdn.datatables.net/1.10.19/js/jquery.dataTables.min.js"></script>
</head>
<body>
<table id="test"></table>
<script>
var dttabl = $('#test').dataTables({
    columns:[
        {data:'id',name:'id'},
        {data:'OrdReaded',name:'OrdReaded'},
        {data:'OrdAccName',name:'Название'},
        {data:'OrdDate',name:'дата'},
        {data:'OrdText',name:'Описание'}
    ]
});
$.ajax({type: 'post', url: '/phpengine.php', data: {'showallslug':true},
                success: function (data)
                {
                           dttabl.fnAddData(data);
                           dttabl.fnAdjustColumnSizing();
                }
});
</script>
</body>
</html>
0
30 / 26 / 9
Регистрация: 06.03.2015
Сообщений: 209
15.01.2019, 22:31  [ТС]
Спасибо за помощь. Все получилось.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
15.01.2019, 22:31
Помогаю со студенческими работами здесь

Object [object Object] has no method 'on'
Uncaught TypeError: Object has no method 'on' - вылезает это в консоли, и не работает скрипт &lt;script&gt;(function($) { ...

Object [object Object] has no method 'on'
Всем здравствуйте. Проблема с WP Parallax Content Slider сразу уточню, что я ни в коем случае не считаю себя гуру в web-development'e ...

Как вывести [object object] в консоле выводит так:
Array(1) 0: ID: &quot;1&quot; OPPORTUNITY: &quot;1900.00&quot; UF_CRM_1556699712: &quot;49&quot; UF_CRM_1556699760: &quot;22&quot; UF_CRM_1556699777: &quot;911909553854&quot; ...

Динамическое добавление Object в существующий Object
Всем привет, вопрос таков, допустим у нас есть объект // некий объект var obj = { sid : &quot;32423j4k2j4k2424d34&quot;, ...

Ошибка при обработке Json - Cannot deserialize the current JSON array because the type requires a JSON object
Всем привет! Помогите, плиз, разобраться с ошибкой: An unhandled exception of type 'Newtonsoft.Json.JsonSerializationException'...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
9
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Основы отладки веб-приложений на SDL3 по USB и Wi-Fi, запущенных в браузере мобильных устройств
8Observer8 07.02.2026
Содержание блога Браузер Chrome имеет средства для отладки мобильных веб-приложений по USB. В этой пошаговой инструкции ограничимся работой с консолью. Вывод в консоль - это часть процесса. . .
SDL3 для Web (WebAssembly): Обработчик клика мыши в браузере ПК и касания экрана в браузере на мобильном устройстве
8Observer8 02.02.2026
Содержание блога Для начала пошагово создадим рабочий пример для подготовки к экспериментам в браузере ПК и в браузере мобильного устройства. Потом напишем обработчик клика мыши и обработчик. . .
Философия технологии
iceja 01.02.2026
На мой взгляд у человека в технических проектах остается роль генерального директора. Все остальное нейронки делают уже лучше человека. Они не могут нести предпринимательские риски, не могут. . .
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru