2013-09-22 2 views
1

Я отправляю JSON-кодированный массив из моего контроллера на мою страницу просмотра. Я делаю это на моей странице просмотра, чтобы получить данные:Доступ к значениям объекта, закодированного JSON

function() { 
    $.get('http://localhost/Location/loc', function(data){ 
     alert(data[0].message); 
    }); 
} 

Данные как этот

{"message":"hello!"} 

Я предупреждая значение сообщения, но мое предупреждение дает мне undefined. Мой вопрос в том, как я могу получить доступ к значениям массива JSON?

Я новичок в JSON, поэтому я мало знаю о JSON.

+0

попробовать 'предупреждение (data.message);' – srain

+0

возможно дубликат [Как разобрать JSON в JavaScript] (http://stackoverflow.com/questions/4935632/how-to-parse-json-in-javascript) – DevlshOne

+0

Возможный дубликат [свойство доступа json-объекта] (http://stackoverflow.com/questions/12346203/access -property-of-json-object) –

ответ

1

Попробуйте изменить функцию:

function() { 
    $.get('http://localhost/Location/loc', function(data){ 
     alert(data.message); 
    }, 'json'); 
} 

Это потому, что JQuery, вероятно, не знает, что данные ответ JSON, так это при условии, что это открытый текст. Вы можете явно указать его в $.get как последний параметр, как в пересмотренном коде, или настроить сервер для отправки ответа с заголовком HTTP Content-Type application/json.

Я предполагаю это, потому что message не является свойством String, и поэтому вы получаете неопределенность.

В качестве альтернативы, вы можете использовать $.getJSON:

function() { 
    $.getJSON('http://localhost/Location/loc', function(data){ 
     alert(data.message); 
    }); 
} 

отметить также, что я изменил оповещение data.message. См. Ответ Knaģis для объяснения.

+0

thankyouuuuuu ваше решение работает для меня ...... – mynameisbutt

1

Данные, содержащиеся в данных, содержат только один объект, а не массив.

В вашем случае используйте вместо этого alert(data.message);.

Массив определяется с помощью скобок [], например [{message:"hello"}, {message:"world"}] представляет собой массив с двумя объектами в нем.

+0

@knagis did not work ... я получаю undefined – mynameisbutt

+0

@mynameisbutt - вы использовали Fiddler или другой инструмент, чтобы узнать, что именно возвращается с сервера? –

0

OK, если это не сработает:

function() { 
    $.get('http://localhost/Location/loc', function(data){ 
     alert(data.message); 
    }); 
} 

попробовать это:

function() { 
    $.get('http://localhost/Location/loc', function(data){ 
     alert(data.message); 
    }, 'json'); 
} 
+0

хорошо, спасибо ... это сработало для меня .. но как каток отправил его первым, поэтому я отмечаю его ответ. thankyou очень – mynameisbutt

+0

@mynameisbutt, это нормально, удачи! – srain

+0

thankyouuuuu очень много – mynameisbutt

Смежные вопросы