Исследование: форма для таргетинга на iFrame для отправки - PullRequest
2 голосов
/ 19 августа 2011

Я изначально решил научиться обрабатывать «готовые к загрузке файлы с помощью ajax»; Я обнаружил и понял одну из основных концепций: это невозможно в качестве ajax, но вы можете отправить форму с целевым значением для скрытого идентификатора iFrame [1] . Это кажется общепринятым сообществом и совместимым со всеми браузерами. Это точная оценка?

Мой вопрос: каковы подводные камни в этом подходе? Потому что, если их нет, мне кажется, что каждый «пост, готовый к работе с ajax», можно сделать таким же образом. Удалите компонент загрузки файла, и этот подход по сравнению, скажем, с подходом jQuery.post(), похоже, дает идентичные результаты.

Во всех вопросах и ресурсах, которые я исследовал, мне удалось найти только «решения» для решения моей первоначальной проблемы. Мне нигде не удалось найти какой-либо вид «списка против или недоверия» или «подводных камней для этого подхода» в отношении формы, нацеленной на iFrame; если вы знаете один, пожалуйста, не стесняйтесь поделиться им!

[1] HTML Пример:

<form method="post" target="take_the_reload">
    ...
</form>
<iframe class="hide_me" id="take_the_reload" name="take_the_reload"></iframe>

Очень обязан,

Биз

Ссылки: просто пара ресурсов, которые я использовал:

  1. http://www.joshclarkson.net/blog/file-uploads-in-a-hidden-iframe-using-jquery/
  2. Форма Firefox, предназначенная для iframe, открывает новую вкладку
  3. http://terminalapp.net/submitting-a-form-with-target-set-to-a-script-generated-iframe-on-ie/
  4. javascript: отправьте форму в iframe ... help
  5. http://www.openjs.com/articles/ajax/ajax_file_upload/

1 Ответ

2 голосов
/ 19 августа 2011

Когда я впервые запустил AJAX (до появления jQuery и Prototype), я делал именно это со всеми моими формами ... просто отправлял их в скрытый Iframe.Это было легко и безболезненно.

Недостатки формы-поста:

  • Это не совсем "чистый" AJAX (загрузка файлов в сторону).Я уверен, что все манипуляции с DOM в iframe для результата медленнее, чем просто получение ответа через XHR.
  • Обработка ошибок более сложна - вы должны посмотреть, что сервер помещает в Iframeв результате
  • Все движется к обработке данных на основе JSON, которая сама по себе не выполняет формы
  • Иногда вы хотите сделать что-то "посередине" между формой и сервером, напримернекоторое отображение полей или включение других данных на стороне клиента
...