JQuery не может понять ответ JSON, когда Content-Type не установлен в «application / json» - PullRequest
2 голосов
/ 05 февраля 2011

Сервер Google App Engine возвращает строку JSON в ответ на запрос POST:

self.response.headers.add_header("Content-Type", "application/json")       
return self.response.out.write(json_string)

Это работает на моем локальном сервере разработки, работающем в Google App Engine Launcher. Заголовок устанавливается, и код jQuery правильно анализирует ответ.

Однако в производственной среде во внешнем интерфейсе Google (при развертывании в производственной среде) страница разрывается, поскольку jQuery неправильно анализирует ответ. ЕДИНСТВЕННОЕ различие, которое я могу найти между локальным и производственным (они выполняют один и тот же код), заключается в том, что ответ на производственный процесс игнорирует мою попытку установить Content-Type на «application / json».

Так что это, вероятно, означает, что я пытаюсь установить недопустимый / нестандартный Content-Type. НО, он работает локально, и именно так я получил свой jQuery, чтобы понять строку JSON.

Итак, как мне отформатировать ответ, чтобы jQuery знал, что это JSON, и правильно его проанализировал?

Ответы [ 3 ]

4 голосов
/ 05 февраля 2011

Просто передайте "json" в качестве аргумента dataType для вызова AJAX, и перед этим ответ будет обрабатываться как json независимо от типа содержимого:)

3 голосов
/ 05 февраля 2011

Попробуйте с:

self.response.headers['Content-Type'] = "application/json"
self.response.out.write(json_string)
0 голосов
/ 05 февраля 2011

Это может показаться глупым, но, возможно, вам нужно прописать первый параметр в add_header, так что это будет "Content-Type"? Возможно, ваш локальный сервер прощает параметры, а серверы Google просто отправляют заголовок как есть. Можете ли вы проверить заголовки, которые возвращаются через панель разработчиков Firebug или WebKit, чтобы увидеть, какие заголовки ответов отправляются?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...