Я использую remotipart для загрузки файла с помощью ajax в моем приложении rails. Я использую jQuery-ujs Ajax «глобальные» события ajax:success
и ajax:error
в своем javascript для запуска кода при успешном завершении или неудаче. Проблема в том, что обратный вызов ошибки всегда срабатывает и никогда не бывает успеха.Загрузка файла Remotipart, дающая NaN в качестве кода ответа
Я вижу на вкладке сети инструментов разработчика, что запрос возвращает статус 200 OK.
Это моя форма, в которой запускается удаленная загрузка.
= form_tag({ action: 'import' }, html: { multipart: true }, class: 'csv_import_form', remote: true, data: { type: :json }) do
Мой контроллер обрабатывает запрос, как JSON и оказывает ответ JSon:
def import
render json: { some: 'sample json' }
end
и это то, что тело ответа выглядит как видно инструменты разработчика:
<textarea data-type="application/json" data-status="200" data-statusText="OK">{"some":"sample json"}</textarea>
Remotipart завершает ответ в текстовой области. Обратите внимание на то, что она включает data-status="200"
Вот это JavaScript:
$(function() {
$(document).on("ajax:success", ".csv_import_form", function(event, data, status, xhr) {
// does not get here
}).on("ajax:error", ".csv_import_form", function(event, xhr, status, error) {
console.log("status code: " + xhr.status);
console.log("json: " + xhr.responseText);
console.log("status text: " + xhr.statusText);
console.log("status: " + status);
console.log("error: " + error);
});
});
Это то, что я вижу выход в консоли:
status code: NaN
json: {"some":"sample json"}
status text: OK
status: OK
error: OK
Кажется, фактический ответ Textarea не должным образом проанализирован , Несмотря на то, что он имеет статус данных = «200», он анализируется как NaN и, таким образом, вызывает обратный вызов ошибки.
Кто-нибудь видел это?
Использование:
rails 4.0.13
remotipart 1.2.1
jquery 1.7.2
Благодарности
Вы пробовали обернуть все в функции документа (готово)? – AdamJeffers
Да, должен был упомянуть, я настраиваю эти обработчики событий внутри документа (готовой) функции. Спасибо за предложение! Отредактировал исходный вопрос, чтобы показать это. – jmflannery