форма отправки с загрузкой файла - PullRequest
3 голосов
/ 27 мая 2010

У меня проблемы с загрузкой файла при использовании jquery.

У меня есть следующий HTML в форме.

<fieldset>
  <ul>
    <li> 
      <div class="field"><input size="35" type="file"
                             name="formFile" id="formFile"/></div> 
    </li>
    <li> 
      <div class="field"><input size="35" type="text" 
                             name="formFileName" id="formFileName" /></div>
    </li>
  </ul> 
</fieldset>

Для публикации данных я использую $('#myForm').ajaxForm(

Когда я публикую данные, а полученные данные содержат некоторый JavaScript, JavaScript не распознается.

Я ожидал, что код javscript будет запущен при получении данных, но это происходит рано. Результаты показывают, что $ или jquery не могут быть найдены.

Если я удалю атрибут name из элемента input type = file, ошибок не будет, но это не правильное решение.

Как это могло произойти?

1 Ответ

1 голос
/ 28 мая 2010

Вам непременно нужно убедиться, что встроенный JS является частью функции обратного вызова.

$('#myForm').ajaxForm(function() { 
  //Do your JS execution
}); 

Лично я не являюсь поклонником абстрактных $ .get (), $ .post (). $ AjaxForm () и т. Д., Поскольку они удаляют так много функциональности методов $ .ajax ().

Если важно, чтобы вы использовали метод ajaxSubmit (), он принимает любой из других параметров $ .ajax, поэтому вы, вероятно, захотите использовать async: false и настроить обратные вызовы success / error.

// attach handler to form's submit event 
$('#myFormId').submit(function() { 
    // submit the form 
    $(this).ajaxSubmit({
                       success: function(result){ callbackFunction(result); }
                       ,error: function(msg,XMLStatus,err){ errFunction(msg,XMLStatus,err); }
                       }); 
    // return false to prevent normal browser submit and page navigation 
    return false; 
});

Надеюсь, это поможет решить некоторые проблемы.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...