gpt4 book ai didi

javascript - 文件选择上的 Ajax 文件上传不起作用

转载 作者:行者123 更新时间:2023-12-02 18:30:26 25 4
gpt4 key购买 nike

我有一个 ajaxForm jQuery 库来完成该任务,并创建了一个示例脚本,如下所示:

HTML 和 JS

<!doctype html>
<body>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<style>
form { display: block; margin: 20px auto; background: #eee; border-radius: 10px; padding: 15px }
#progress { position:relative; width:400px; border: 1px solid #ddd; padding: 1px; border-radius: 3px; }
#bar { background-color: #B4F5B4; width:0%; height:20px; border-radius: 3px; }
#percent { position:absolute; display:inline-block; top:3px; left:48%; }
</style>
</head>
<body>
<h1>Ajax File Upload Demo</h1>

<form id="myForm" action="" method="post" enctype="multipart/form-data">
<input type="file" size="60" name="myfile" id="myfile">
<input type="submit" value="Ajax File Upload">
</form>

<div id="progress">
<div id="bar"></div>
<div id="percent">0%</div >
</div>
<br/>

<div id="message"></div>

<script>
$(document).ready(function()
{


$('#myfile').change(function(){

var options = {
url: "doajaxfileupload.php",
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>");

}

};

$("#myForm").ajaxForm(options);

});
});

</script>
</body>

</html>

否,当使用“提交”按钮提交表单时,此脚本可以正常工作。

但是我尝试通过单击/更改文件上传按钮来上传文件,以便立即上传文件而不单击提交按钮,但它不起作用。

当然它不起作用,因为 $('#myForm').ajaxForm(options); 处理表单提交。

现在可以在此脚本中执行哪些操作来满足我的要求。请指导。

最佳答案

我将 $("#myForm").ajaxForm(options); 更改为:

$("#myForm").ajaxSubmit(options);

查看工作 JS Fiddle Demo .

此更改的原因:
您需要使用ajaxSubmit,以便可以管理选项中的事件。 ajaxForm 不允许您绑定(bind)事件,因为它是“托管”的。

Use ajaxSubmit if you want to bind your own submit handler to the form.

Use ajaxForm when you want the plugin to manage all the event binding for you.

(来源:Ajax Form JQuery 插件中的注释)

<小时/>

这是使用Ajax Forms jQuery Plugin 。您的 HTML 有两个指向 jQuery 的链接,其中之一不应该是指向 jQuery 表单插件的链接吗?

<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7/jquery.js"></script>
<script src="http://malsup.github.io/jquery.form.js"></script>

关于javascript - 文件选择上的 Ajax 文件上传不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17852810/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com