Ошибка загрузки файлов через 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

  • PHP разница между print и echo

    Я считаю, что необязательно знать разницу между ними, но все же мне было интересно разобраться, потому как умение досконально разобраться […]

  • Как включить DHTML в IE8

    Предупреждение: данная статья может изобиловать неправильными фактами и может вообще Вам не помочь. Но хотя бы что-то. DHTML — в […]

  • Как посчитать сумму в Excel

    Excel предлагает очень много возможностей для работы с данными. В нем можно проводить безумное количество вычислений без особого труда. В […]

  • Mysql получить порядковый номер строки в запросе

    К сожалению в mysql нет стандартных средств это сделать, но можно выйти из ситуации следующим образом 1 2 SET @rownum […]

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

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

*
*