jquery表单没有按预期工作。 ajaxForm不是一个函数

时间:2013-09-04 12:47:06

标签: jquery ajax forms jquery-forms-plugin ajaxform

我正在尝试使用jquery表单,但它在concole中是ajaxForm不是一个函数。 正确包含了jquery.form.js,代码位于文档就绪函数中......

这是剧本:

$("#apply-form").ajaxForm({

                beforeSend: function()
                {
                    $("#progress").show();
                    //clear everything
                    $("#bar").width('0%');
                    $("#message").html("");
                    $("#percent").html("0%");
                },
                uploadProgress: function(event, position, total, percentComplete)
                {
                    $("#bar").width(percentComplete+'%');
                    $("#percent").html(percentComplete+'%');

                },
                success: function()
                {
                    $("#bar").width('100%');
                    $("#percent").html('100%');

                },
                complete: function(response)
                {
                    $("#message").html("<font color='green'>"+response.responseText+"</font>");
                },
                error: function()
                {
                    $("#message").html("<font color='red'> ERROR: unable to upload files</font>");

                }
            });

这是HTML表单

<form id="apply-form" enctype="multipart/form-data" method="post" action="">


    <table>
                <tr><td>CV:</td>
                    <td>
                        <input type="file" name="cover">
                    </td>
                </tr>
                <tr><td>Cover Letter:</td>
                    <td>
                        <input type="file" name="curriculum">
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <div id="progress">
                            <div id="bar"></div>
                            <div id="percent">0%</div >
                        </div>
                    </td>
                </tr>
                <tr>
                    <td colspan="2">
                        <div id="message"></div>
                    </td>
                </tr>
            </table>
        </form>

我在codeigniter中创建网站,并且每个页面都包含一个标题模板。在头部分,我按此顺序包含了所有脚本:

        <script src="/jobs/public/js/jquery.js"></script>
        <script src="/jobs/public/js/jquery.form.js"></script>
        <script src="/jobs/public/js/javascript.js"></script>
        <link href="/jobs/public/js/jquery-ui-1.10.3.custom/css/custom-theme/jquery-ui-1.10.3.custom.css" rel="stylesheet">
        <script src="/jobs/public/js/jquery-ui-1.10.3.custom/js/jquery-1.9.1.js"></script>
        <script src="/jobs/public/js/jquery-ui-1.10.3.custom/js/jquery-ui-1.10.3.custom.js"></script>

我也在使用jQuery UI。这可能是问题吗?

4 个答案:

答案 0 :(得分:22)

您正在加载jQuery两次。第二次加载jQuery会覆盖第一个和任何插件。

<script src="/jobs/public/js/jquery.js"></script>
<script src="/jobs/public/js/jquery.form.js"></script>
...
<script src="/jobs/public/js/jquery-ui-1.10.3.custom/js/jquery-1.9.1.js"></script>

第二个jquery-1.9.1未获得.ajaxForm。使用其中一种。

将表单jquery添加到脚本底部

答案 1 :(得分:8)

使用此功能并完成工作

<script src="http://malsup.github.com/jquery.form.js"></script> 

答案 2 :(得分:1)

我设计了一个好的上传器:

<script src="jquery-1.4.2.min.js" type="text/javascript"></script>
<script src="jquery.form.js"></script>

并完成并使用ajax就像这样:

$('form').ajaxForm
    ({

    beforeSend: function() 
    {
    var percentVal = '20%';
    prog.css("width",percentVal);

    },
    uploadProgress: function(event, position, total, percentComplete) 
    {
    var percentVal = percentComplete + '%';

    prog.css("width",percentVal);
    darsad.html(percentVal + ' uploading .');
    //console.log(percentVal, position, total);
    },
    success: function() 
    {
    var percentVal = '100%';

    darsad.html(percentVal + ' uploaded success.');
    prog.css("width",percentVal);

    },
    complete: function(xhr) 
    {
    //status.html(xhr.responseText);
    darsad.html(percentVal + ' uploaded complete.');
    }

    }); 

答案 3 :(得分:0)

ajaxForm is not a function 基本上意味着,要么函数不存在,要么函数在某处有问题。

我通过整理插件加载/路径和js文件来解决这个问题。就我而言,由于顺序错误,无法调用该函数。