Подтвердить что ты не робот

JQuery.getJSON и jQuery.parseJSON return [object Object]?

РЕДАКТИРОВАТЬ. Я получил значок "знаменитого вопроса" с этим вопросом, поэтому я решил, что вернусь к нему и придерживаюсь того, что произошло со мной, прямо на самом верхушке для людей чтобы найти ответ сразу.

В принципе, я был новичком в JSON. JSON - это объект (очевидно), поскольку он содержит всевозможные вещи! Таким образом, я был похож на "Эй, javascript, просто всплыл оповещение со всеми этими данными JSON", ожидая, что он даст мне данные JSON в виде строки. Но javascript этого не делает (это хорошо!), Так что это было похоже на "Эй, так мы показываем объекты, [объект Object]".

Что бы я мог сделать, это что-то вроде alert(obj.DATA[0][1]), и это показало бы мне этот бит объекта.

Я действительно хотел проверить, что я делаю хорошие данные JSON, которые я мог бы проверить с помощью JSON.stringify.

В любом случае, вернемся к нашим регулярно запланированным вопросам!


Я пытаюсь получить некоторые данные JSON с помощью вызова ajax, но jQuery, похоже, не похож на мой JSON.

если я сделаю что-то вроде:

function init2() {
    alert("inside init2");
    jQuery.ajax({
        url: "/Mobile_ReportingChain.cfm",
        type: "POST",
        async: false,
        success: function (data) {
            alert(data);
            var obj = jQuery.parseJSON(data);
            alert(obj);
        }
    });
}

Я получаю это как от предупреждения (данных):

    {"COLUMNS":["MFIRST_NAME","MLAST_NAME","MMDDL_NAME","MEMPLY_ID","MAIM_NBR","EMPLY_ID"],
    "DATA":[

["FNAME1          ","LNAME1                  ","MI1              ","000-14-7189","026-0010","000-62-7276"]      

,["FNAME2           ","LNAME2                    ","MI2              ","000-01-2302","101-1850","000-14-7189"]  

,["FNAME3           ","LNAME3                  ","MI3              ","000-91-3619","102-1000","000-01-2302"]    

,["FNAME4         ","LNAME4                  ","MI4              ","000-25-9687","102-1000","000-91-3619"]  

]}  

который JSONLint говорит, действителен json. alert (obj) дает мне это, однако:

[object Object]

добавление dataType: "json" или "text json" просто заставляет сообщать [object Object] в alert(data).

Я бы очень хотел, чтобы это выяснилось, кто-нибудь знает, почему он это делает? Я новичок в jQuery, моя цель - получить массив для каждого из столбцов. Тот же самый код, который я использую, работал на другой странице, на которую он похож, что больше всего меня беспокоит.

4b9b3361

Ответ 1

Функция alert() может отображать только строку текста. В качестве единственного параметра он принимает строку или объект. Однако объект будет преобразован в строку, которая может быть отображена.

При извлечении JSON через jQuery метод $.ajax() будет автоматически анализировать JSON и превращать его в объект JavaScript для вас. Ваша переменная data - это объект JavaScript, а не строка JSON, как можно было бы ожидать.

Так как alert() может отображать строки при попытке оповестить ваш объект data, ваш объект будет преобразован в его строковое представление. Строковое представление объекта JavaScript [object Object].

В целях отладки вы можете использовать console.log(data). Затем вы можете проверить объект и его содержимое через консоль в инструментах разработчика браузеров.

function init2() {
    jQuery.ajax({
        url: "/Mobile_ReportingChain.cfm",
        type: "POST",
        dataType: "json",
        async: false,
        success: function (data) {
            console.log(data);
        }
    });
}

Если вы по какой-то причине все еще хотите оповестить JSON-данные, вам придется превратить ваш объект data обратно в строку JSON. Для этого вы можете использовать JSON.stringify:

alert(JSON.stringify(data));

Ответ 2

он хочет строку

 var obj = $.parseJSON(JSON.stringify(data));

Ответ 3

попробуйте отправить этот объект на console.log. Вы получите более четкое представление о том, что он содержит.

Кроме того, поместите dataType: 'json' и удалите parseJSON, потому что это все равно.

Ответ 4

Вот как он должен работать. Ваш JSON становится объектом javascript. Затем вы можете манипулировать этим объектом как обычный объект javascript.

data.COLUMNS, например, должен возвращать массив.

Ответ 5

[object Object] - это строковое представление объекта javascript.

Попробуйте получить доступ к свойствам объекта.

alert(data.COLUMNS[0]);

Ответ 6

jQuery.parseJSON преобразует json-строку в json-объект, поэтому alert (obj) покажет вам [object Object], поскольку это объект.

Если вы хотите увидеть, что содержит obj, используйте console.log(obj), а затем проверьте сообщение журнала консоли.

Ответ 7

$.getJSON( "UI/entidades.json.php", function(data){
	result = JSON.stringify(data);
	alert(result)
	console.log(result)
})