Как получить доступ к имени/значению объекта JSON?
function (data) {
//add values based on activity type
//data = JSON.parse(data);
//alert(abc.Phone1);
alert(data.myName)
alert(data.toString());
if (activityType == "Phone") {
}
return;
},
Как вы можете видеть эту функцию обратного вызова $.ajax
, принимая данные JSON
от контроллера.
Например:
[{"name":"myName" ,"address": "myAddress" }]
В этом случае мое первое предупреждение, дающее мне undefined и всплывающее всплывающее/второе оповещение, выглядит следующим образом:
[{"name":"myName" ,"address": "myAddress" }]
Как мне получить доступ к значению по имени, чтобы мое первое предупреждение заполнилось с помощью myName
, которое является значением name
?
Ответы
Ответ 1
Вместо анализа JSON вы можете сделать, как followng:
$.ajax({
..
dataType: 'json' // using json, jquery will make parse for you
});
Чтобы получить доступ к свойству JSON, выполните следующие действия:
data[0].name;
data[0].address;
Зачем вам нужен data[0]
, потому что данные являются массивом, поэтому для его получения содержимого вам нужен data[0]
(первый элемент), который дает вам объект {"name":"myName" ,"address": "myAddress" }
.
И для доступа к свойствам правила объекта:
Object.property
или иногда
Object["property"] // in some case
Итак, вам нужно
data[0].name
и т.д., чтобы получить то, что вы хотите.
Если вы не
установите dataType: json
, тогда вам нужно проанализировать их с помощью $.parseJSON()
и получить данные, как указано выше.
Ответ 2
JSON, который вы получаете, находится в строке. Вы должны преобразовать его в объект JSON
Вы прокомментировали наиболее важную строку кода
data = JSON.parse(data);
Или, если вы используете jQuery
data = $.parseJSON(data)
Ответ 3
Вы должны сделать
alert(data[0].name); //Take the property name of the first array
а не
alert(data.myName)
jQuery должен быть в состоянии обнюхать dataType для вас, даже если вы не настроите его так, чтобы он не нуждался в JSON.parse.
скрипка здесь
http://jsfiddle.net/H2yN6/
Ответ 4
Если вы отвечаете как {'customer':{'first_name':'John','last_name':'Cena'}}
var d = JSON.parse(response);
alert(d.customer.first_name); // contains "John"
Спасибо,
Ответ 5
Попробуйте этот код.
function (data) {
var json = jQuery.parseJSON(data);
alert( json.name );
}
Ответ 6
Я думаю, вы должны упомянуть dataType: 'json'
в конфигурации ajax и получить доступ к этому значению:
data[0].name
Ответ 7
Вот дружелюбный совет. Используйте что-то вроде Инструменты разработчика Chrome или Firebug для Firefox для проверки ваших вызовов и результатов Ajax.
Вы также можете потратить некоторое время на понимание вспомогательной библиотеки, например Underscore, которая дополняет jQuery и дает вам более 60 полезных функций для управления объектами данных с помощью JavaScript.