2016-05-25 6 views
0

У меня есть функция сообщения ajax, которая получает данные из бэкэнд.Чтение данных json от PHP назад к сообщению ajax

$.ajax({ 
    type: "POST", 
    url: action, 
    result: "json", 
    data: formData, 
}) 
.done(function(msg) { 

    console.log(msg.status); 

}); 

Php является

return json_encode(array('status' => 'ok')); 

Но когда я пытаюсь читать msg.status результат не определен. Если я регистрирую значение msg, он имеет: {"status": "ok"}

Как его прочитать в json формате?

+2

'return' in php не выполняет вывод. Только вывод отправляется клиенту в качестве ответа, поэтому вы должны «эхо» json. –

+0

echo имеет тот же результат – raphadko

+0

, затем убедитесь, что ошибок не произошло. если ваш код выводит/предупреждает, это испортит json. если ваш аякс-вызов ожидает json, тогда ЛЮБОЙ вывод не-json приведет к повреждению всего json-ответа, даже если часть json отлично сформирована. 'Предупреждение: blah blah в строке 30 {" status ":" ok "}' - это мусор в отношении json parser. –

ответ

4

Нет result Недвижимость в $.ajax. Если вы хотите сообщить jQuery для разбора JSON для вас, вам нужно использовать dataType.

$.ajax({ 
    type: "POST", 
    url: action, 
    dataType: "json", 
    data: formData, 
}) 
.done(function(msg) { 
    console.log(msg.status); 
}); 
+0

Спасибо, Ракета, это сработало! Что-то меня немного сбивает с толку. Данные, которые я отправляю (formData), не в формате json, не означает, что тип данных должен ссылаться на аргумент данных $ .ajax вместо возвращаемого значения? – raphadko

+0

@raphadko: Нет, 'dataType' не имеет никакого отношения к свойству' data' вообще. 'dataType' сообщает jQuery, как анализировать * результат *. Если вы хотите изменить тип * запроса *, вы можете использовать свойство contentType. См. Http://api.jquery.com/jquery.ajax/ –

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