JQuery и плагин Form: загрузка файлов?

Итак, проблема:



Делаю отправку формы на сервер посредством метода ajaxSubmit() вышеупомянутого плагина. Формы без элемента file работают отличненько. Результат возвращается в виде JSON-строки.



Проблемы возникают, когда на форму добавляется выбор файла. В шаблоне формы у меня автоматом появляется соответствующий enctype. Плагин все отправляет, результат приходит в нужном виде (смотрел через firebug). Первая проблема — браузер предлагает сохранить результат в виде файла. Погуглив, пришел к тому, что Content-Type ответа пришлось поменять с 'application/json; charset=UTF-8' на дефолтный 'text/html; charset=utf-8'.



Теперь ответ приходит «в студию», но success-функция не отрабатывает. Судя по всему, теперь затычка в формате ожидаемого результата — я ведь указывал опцию dataType: 'json'. Убрал опцию — success отрабатывает, но, судя по всему, плагин пытается сконвертировать результат в формат html, т.к. добавляются тэги типа HEAD и BODY. Причем firebug показывает, что изначальный результат приходил верный, т.е. это косяк именно плагина.



Кто-нибудь встречался с такими проблемами? Как их решать? Использую jQuery 1.4.2 (пробовал переключиться на 1.3.2 — те же грабли) и Form 2.5.1 (вроде как последняя версия).
  • Вопрос задан
  • 4563 просмотра
Пригласить эксперта
Ответы на вопрос 4
Действительно… У меня тоже были проблемы с аплоадом файлов, только как решил не помню, вот и подумал может это помогло.
Ответ написан
Комментировать
Чем не подходит метод ajaxForm?
Ответ написан
k12th
@k12th
console.log(`You're pulling my leg, right?`);
Это связано с тем, что единственный кроссбраузерный метод загрузки файлов AJAX'ом — создать невидимый />и указать форме атрибут target=«upload».
Плагином этот ответ считывается только в виде текста.

Решение: парсить самому JSON.
Ответ написан
nikitammf
@nikitammf
    Насколько я помню проблема именно в firebug'е. Попробуйте с отключенным firebug'ом. Дело в том, ка уже было сказано выше, форма отсылается на iframe и плагин берет document.body.innerHTML, а наш любимый firebug добавляет пару своих дивов в iframe — json не валидный.
    Есть способ через textarea или ответ возвращать не просто json, а json обернутый в «pre».
    Но все дело в firebug'е, то есть есть человек инспектит ваш сайт через firebug, то у него работать не будет.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы