Прототип JS: файл ввода типа отсутствует на AJAX отправить

Я создал пользовательскую форму varien и хочу отправить форму, используя прототип ajax. Эта форма содержит четыре поля

two text field and
two file field.

Но когда я отправляю данные, используя ajax прототипа js, форма не передает два поля и на enctype = «multipart / form-data», но не работает.
Код:

<form action="bt" method="post" enctype="multipart/form-data" name="new-art-upload" id="new-art-upload">
<input type="text" name="fname" value=""   class="input-text required-entry"/>
<input type="text" name="fname" value="" class="input-text required-entry"  />
<input type="file" name="fileone"  class="required-entry"   />
<input type="file" name="filetwo" class="required-entry"   />
<button type="submit" title="<?php echo $this->__('Save The Art') ?>"  class="button newAdd_Sub" onclick="newartUpload.submit(this)"><span><span><?php echo $this->__('Save Art') ?></button>
</form>

Автор сценария:

<script>
var newartUpload=new VarienForm('new-art-upload');
newartUpload.submit=function(button,url){
if(this.validator.validate) {
var form=this.form;
var oldUrl = form.action;
if (url) {
form.action = url;
}
var e=null;
try{
// this.form.submit();
new Ajax.Request(this.form.action,{
method:this.form.method,
parameters:this.form.serialize(),
contentType: 'multipart/form-data',

onSuccess:function(transport){
var response=transport.responseText.evalJSON(true);

}.bind(this)
});}catch(e){
}
if(e){
throw e;
}
}
}.bind(newartUpload)
</script>

Я думаю, что это может быть тип контента и в основном тип контента в форме /

Основная проблема заключается в том, что поля ввода файлов не отправляются в запрос ajax

1

Решение

Вы не можете отправить файл, используя Prototype через Ajax, потому что XMLHttpRequest (основа Ajax) не работает с многочастной формой. Существуют обходные пути, такие как использование iframe для замочной скважины для отправки обычного запроса формы и использование обратного вызова через iframe для перенаправления или реакции внешней страницы, чтобы показать, что форма завершена. Новый интерфейс File в современном JS (стандартизированный спустя годы после того, как был написан интерфейс Prototype Ajax) теперь позволяет отправлять данные файла через отправку JS, но это активно не поощрялось (и возможно только в крошечной горстке браузеров, не слишком давно) поэтому Prototype просто удаляет входные данные из списка элементов формы, которые он будет сериализовать.

3

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]