Возникла проблема с ответом submit в ExtJS (ответ в JSON, но где-то введен HTML) - PullRequest
2 голосов
/ 15 марта 2012

Я получаю этот ответ:

{"success":true,"errorCode":-1,"error":""}

Нет HTML внутри JSON, но js говорит, что введено:

<code>uncaught exception: You're trying to decode an invalid JSON String: <pre>{"success":true,"errorCode":-1,"error":""}

код: http://www.pasteall.org/30057/javascript

Исправлена ​​ошибка, из-за которой при загрузке файла отправка ExtJS не могла обработать ответ json. Если вы зарабатываете на html и конвертируете виолу, вы получаете на

$this -> output -> set_content_type('text/html'); 

вот и вся проблема

Ответы [ 4 ]

2 голосов
/ 30 апреля 2012

Поведение, которое вы испытали, на самом деле задокументировано (хотя и достаточно хорошо) в документации ExtJS API - см. Описание Ext.form.Basic.hasUpload () метода.

Короче говоря, загрузка файлов не выполняется обычным Ajax XMLHttpRequests. Вместо этого он использует скрытый элемент iframe. В результате, чтобы процитировать документацию ExtJS:

Если сервер использует JSON для отправки возвращаемого объекта, то Заголовок Content-Type должен быть установлен на "text / html" ...

Именно так вы, казалось, в конечном итоге и решили свою проблему, поэтому это объясняет, почему она действительно работает. Так что это «не ошибка, а особенность». : -D

1 голос
/ 15 марта 2012

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

В любом случае, кажется, что результат возвращается в формате html, то есть содержит данные, отличные от json. Проверьте, почему теги включены в результат.

Проверьте также конфигурацию страницы вашего сервера - она ​​должна быть настроена правильно, чтобы возвращался формат JSON.

Это также объясняет, почему ваш статус результата успешен. это связано с тем, что вызов к серверу завершился успешно, то есть результат был возвращен клиенту без каких-либо ошибок.

Теперь, после того как сервер вернул результаты клиенту, хранилище пытается обработать полученные данные, но безуспешно, поскольку содержимое не в формате JSON.

1 голос
/ 15 марта 2012

Команда Ext.JSON.decode('{"success":true,"errorCode":-1,"error":""}'); должна нормально анализировать ответ JSON.

Вы уверены, что ошибка не совсем соответствует тому, что она говорит - в ваш ответ случайно включены теги ...?

0 голосов
/ 29 апреля 2012

У меня такая же проблема, когда я вставляю поле файла.Если вы удалите его, он работает.Проблема не в самом ответе.Вы должны управлять файлом загрузки на стороне сервера.

Между сервером и клиентом ответ преобразуется из 'json' в ответ HTML.

см. Загрузка изображений с помощью узла.JS, Экспресс и Мангуст

...