Ошибка загрузки файлов через Ajax в Firefox

Что имеем:

Плагин ajaxForm для отправки форм через Ajax

Firefox 10.0.2

Столкнулся с такой вот ошибкой:

uncaught exception: [Exception… «Security error» code: «1000» nsresult: «0x805303e8 (NS_ERROR_DOM_SECURITY_ERR)» location: «xxx»]

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

Для получения ответа сервера уже использовалась конструкция

<code><textarea>{ "my": "response" }</textarea></code>

Включение опции iframe у плагина не помогало.

Ошибка вообще не редкая на самом деле, но тут косяк был мой: перед отправкой формы я декодировал данные для передачи (из-за разных кодировок) незателивым скриптом:

1
2
3
$($form).find('input').each(function(){
$(this).val(encodeURIComponent($(this).val()));
})

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

Это ни в коем случае не баг, просто манипулировать с данными из input type=file нельзя, потому я просто модифицировал скрипт:

1
2
3
$($form).find('input[type="text"]').each(function(){
$(this).val(encodeURIComponent($(this).val()));
})

И это решило проблему.

Random Posts

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

*
*