2015-07-26 9 views
0
$.get("api/suites", function(result){ 
    console.log("the suites get api result is of type - " + typeof result) 
    console.log("the list of custom suites are " + result) 
    }, "json") 

Он печатает, заголовков ответа

the suites get api result is of type - string 
    the list of custom suites are "{\"suites\":[\"h\",\"b\"]}" 

Проверить с завитком -

curl -v -X GET http://localhost:8002/api/suites 

показывает,

Content-Type: application/json; charset=utf-8 
"{\"suites\":[\"h\",\"b\"]}" 

Почему Безразлично 't $ .get преобразовывать данные json в объект, перед вызовом функция обратного вызова?

Я пробовал то же самое с вызовом ajax вместо $ .get, но все же обратный вызов получает строку.

$.ajax({"url": "api/suites", "method": "GET", "dataType": "json", headers: {  Accept : "application/json; charset=utf-8" }}) 
+0

@ Натан, который просто взломать для фиксации актуальной проблемой, поскольку она уже должна быть разобрана внутренне JQuery '$ .ajax – charlietfl

+0

@charlietfl к сожалению о том, что - удалил комментарий! Кто-то должен действительно изучить jQuery docs ... :-) – Nathan

+0

у вас есть дополнительные кавычки ... ответ не должен иметь внешних кавычек вокруг '{}'. Итак, у вас есть json in json. Проблема заключается в выходе сервера – charlietfl

ответ

2

Проблема заключается в том, что реакция имеет дополнительные кавычки Обертывание JSon представление объекта ... делает его json in json строку (из-за отсутствия лучшего описания)

Снимите дополнительный котировки на сервере, который оборачивают внешнее {} так, что оно справедливо для преобразования объекта

0

Не думаю, что это автоматически. Не уверен, что вы звоните в свой собственный API, но запрашиваемый API возвращает ответ в строчном формате. Следующие должны работать:

result = JSON.parse(result) 
+0

Я бы так подумал - но отметьте комментарий charliefl в вопрос. Он говорит, что jQuery должен автоматически анализировать результат ... – Nathan

+0

'не думаю, что это не так автоматически ... ... читать документы ... это так и должно быть в этом случае, когда задан тип dataType и когда заголовок correct – charlietfl

+0

Я использовал AJAX таким же образом и всегда должен был анализировать ответ, когда он находится в строчном формате, даже если это строка данных JSON, и у меня есть ответ, помеченный как JSON в вызове AJAX. –

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