Проблема асинхронной загрузки с использованием jquery.form.js - PullRequest
5 голосов
/ 18 ноября 2010

Я использую плагин jquery.form для асинхронной загрузки документов в проект MVC.

Взяв мое руководство от этого предыдущего ответа, вот что у меня на странице:

<% using(Html.BeginForm("Create", "JobFile", FormMethod.Post, new { id = "uploadForm", enctype = "multipart/form-data" })) %>
<% { %>
<%: Html.ValidationSummary() %>

    <input type="file" id="fileToUpload" />
    <input type="submit" value="Upload file" />
    <input type="text" id="RelatedFileName" />

<% } %>

<script type="text/javascript" src="../../Scripts/jquery-1.4.1.min.js"></script>
<script type="text/javascript" src="../../Scripts/jquery.form.js"></script>
<script type="text/javascript">
    $(function () {
        $('#uploadForm').ajaxForm(function (result) {
            if (result.errorMessage != '') {
                alert(result.errorMessage);
            } else {
                $('#RelatedFileName').val(result.fileName);
            }
        });
    });
</script>

Моя проблема в том, что при загрузке страницы я получаю следующую ошибку JavaScript:

Uncaught TypeError: У объекта # нет метода 'ajaxForm'

Эта ошибка найдена в строке, содержащей

$('#uploadForm').ajaxForm(function (result) {

Может кто-нибудь сказать мне, почему я получаю эту ошибку?

Ответы [ 5 ]

4 голосов
/ 18 июля 2012

Убедитесь, что jquery не включен на страницу дважды.

1 голос
/ 15 июля 2012

Вот метод, который я использую для MVC3, CodeIgniter и Yii. Важно отметить, что вы должны указать method = "post" , enctype и encoding = "multipart / form-data"

var submitForm = function(_formId){
var _genMsg = $('#genMsg');
_submitForm = $('form').index($('#'+_formId));
if(subCommonForm(_submitForm, 'main')){
    _genMsg.attr('class', 'information-box round');
    _genMsg.html('Saving...');
    $('#'+_formId).ajaxForm({
        dataType: 'json',
        success: function (data) {
            _genMsg.attr('class', 'information-box round');

            data.code == 0
                ? _genMsg.attr('class', 'confirmation-box round')
                : _genMsg.attr('class', 'error-box round');

            _genMsg.html(data.message);
            _genMsg.fadeIn();
        }
    });

    $('#'+_formId).submit();
}
};
0 голосов
/ 21 ноября 2013

проверьте, есть ли у вас $

$('#your-form')

а не

('#your-form')

0 голосов
/ 18 ноября 2010

Ярлык:

$(function () {

Не работает в последней версии jQuery, необходимо использовать:

 $(document).ready(function () {
0 голосов
/ 18 ноября 2010

Является ли uploadForm идентификатором вашего <form> объекта? Если это так, то вы можете захотеть проверить что-то вроде FireBug, чтобы убедиться, что ваш плагин правильно включен на вашей странице.

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