我正在用mootools创建一个ajax上传器。当我删除ajax并只是上传表单时,我得到$ _FILES文件数据。但是当我使用ajax版本时,$ _FILES超级全局是空的。表格的每个其他部分都存在。它就好像它根本不发送图像,而只是在ajax版本中。任何帮助表示赞赏。 谢谢!
<form id="uploadphoto_pod" action="upload.php" enctype="multipart/form-data" method="post">
<input type='file' id='uploadphoto' name='uploadphoto'/>
<input type="submit" class="submit" name="add_product" value="Upload" />
</form>
<div id="response"><!-- Ajax Response --></div>
<script type="text/javascript">
window.addEvent('domready', function(){
$('uploadphoto').addEvent('submit', function(e) {
//Prevents the default submit event from loading a new page.
e.stop();
//("this" refers to the $('uploadphoto') element).
this.set('send', {onComplete: function(response) {
$('response').set('html', response);
}});
//Send the form.
this.send();
});
});
</script>
答案 0 :(得分:2)
还有"Form.Upload" Mootools Plugin可以为旧版浏览器自动回退一个很好的HTML5上传 - 它可以很好地完成这项工作,甚至可以通过拖放实现多文件上传。丢弃支持,但遗憾的是缺乏可扩展性 - 我目前正在尝试实现一个允许我添加其他表单元素的功能 - 目前,只提交了文件输入fielts。
就在几分钟前,我发现this simple and lean "File.Upload" Extension - 这终于成功了。它非常易于配置,允许我将其他字段发送到表单数据的接收文件。虽然没有多文件选择,但它似乎非常适合简单的单文件ajax上传,并且可以在文件选择器输入字段的更改事件上触发。
答案 1 :(得分:0)
单独使用Javascript就无法做到这一点。您将需要某种类似SWFUpload的Flash插件。或者使用新的XMLHTTPRequest v2。所有浏览器尚不支持最后一个。所以现在坚持使用第一个选项。