我尝试使用jQuery上传文件。我使用一个包含Input
的隐藏表单,然后使用jQuery触发文件浏览器。一旦修改了输入,该文件就会被发送到PHP服务器脚本。
我的问题是,如果我只是做$("form1").submit();
一切工作完美,但我的页面然后得到重定向。为了避免重定向,我想从PHP脚本中获得响应文本,因此我使用了jQuery Post
函数,但这次PHP脚本不认识到有一个文件帖子,并在有($_FILES) = nothing
时返回一个错误。
My HTML Code:
<form id="form1" name="up1" method="POST" action="upload.php" enctype="multipart/form-data">
<input style="width:0px;height:0px"id="br" type="file" name="Filedata"/>
</form>
jQuery: $("#br").change(function() {
var $el = $('#br');
$('#form1').submit();
});
//The code above works perfectly if I dont add this code below.
$("#form1").submit(function(event) {
event.preventDefault();
var $el = $('#br');
var $form = $( this ),
term = $form.find('input[name="Filedata"]').val(),
url = $form.attr( 'action' ),
enctype= "multipart/form-data";
$.post( url, { s: term },
function( data ) {
alert(data);
}
);
});
无法使用Ajax上传文件。但是,这里有一个技巧:创建一个隐藏的iframe并将Form的目标设置为iframe。使用iframe的readyState属性来告知文件加载何时完成。这不是真正的Ajax,但看起来很像。
你可以试试ajax-upload plugin.