我正在尝试使用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。这可能是问题吗?
答案 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文件来解决这个问题。就我而言,由于顺序错误,无法调用该函数。