2014-01-23 4 views
-1

Я использую функцию $ .post() jQuery. Я получаю ниже данныхДоступ к данным JSON в javascript

, в то время как я предупреждаю возвращенные данные, используя код alert(data);.

[{"sn":"2","res_id":"101","res_owner_id":"28","res_address":"uk,london"}]

Я хотел бы получить одно значение данных, как sn = 2.

Я попытался с кодом alert(data[0].sn);

Я прочитал ниже StackOverflow сообщений.

How can I get value through JSON array like query

Search an array for matching attribute

get one item from an array of name,value JSON

Но не смог найти какое-либо решение.

Может ли кто-нибудь помочь мне получить отдельные данные?

Благодаря

+1

, что вы получили чисто строка, это еще не объект. используйте метод parse для преобразования его в объект, основанный на стандарте json. то вы можете рассматривать его как объект и использовать. (точка) для доступа к значению. – Timeless

ответ

2

ваши данные, как представляется, не JavaScript object (это строка) сначала преобразовать данные в JavaScript object с JSON.parse(data) затем alert(data[0].sn)

+0

Что вы имеете в виду, это не форматированный JSON? – rid

+0

sMr имеет его полностью назад. Он ** является форматированным ** JSON, ему нужно преобразовать в массив JavaScript. – Quentin

+0

@Quentin no, если это был объект json в предупреждающем сообщении, пользователь должен увидеть сообщение, подобное объекту []. – semirturgay

3

Вы можете использовать JSON.parse() на строку JSON, чтобы превратить его в объект JavaScript.

data = JSON.parse(data); 
alert(data[0].sn); 

JQuery должен быть в состоянии сделать это за вас автоматически, хотя, если вы укажете dataType быть json при вызове метода $.post().

2

Когда вы запустите alert, вы получаете строку, содержащую ваши данные (а не [Object object] или тому подобное). Это означает, что jQuery не распознал ответ как JSON, поэтому он не проанализировал его.

Вы должны исправить это на сервере, указав ответный заголовок HTTP-ответа Content-Type: application/json.

Вы можете взломать это, добавив "JSON" в качестве четвертого аргумента в $.post (чтобы сказать jQuery, чтобы игнорировать то, что сервер говорит о данных, и проанализировать его как JSON в любом случае).

0

если вы используете JQuery, вы можете использовать

var new_data = $.parseJSON(data); 
alert(new_data[0].sn); 
Смежные вопросы