2010-11-27 78 views
1

我正在使用mootools创建ajax上传程序。当我删除ajax并简单地上传表单时,我得到$ _FILES和存在的文件数据。但是当我使用ajax版本时,$ _FILES超级全局变量是空的。表格的其他部分都存在。它的行为就好像它根本不发送图像,但只在ajax版本中发送。任何帮助表示赞赏。 谢谢!使用Mootools上传图片

<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

你不能用Javascript单独做到这一点。您将需要某种类似SWFUpload的Flash插件。或使用新的XMLHTTPRequest v2。所有浏览器都不支持最后一个。所以现在坚持第一个选择。

+0

谢谢您的回应 – abhis 2010-11-27 10:44:58

2

还有"Form.Upload" Mootools Plugin,它具有很好的HTML5上传功能,可以自动回退旧版浏览器 - 它可以很好地实现,甚至可以实现多文件上传拖拽支持,但可悲的是缺少一点可扩展性 - 我目前试图实现一个功能,让我添加额外的表单元素 - 目前,只有文件输入框正在提交。

就在几分钟前,我发现this simple and lean "File.Upload" Extension - 这终于成功了。这是非常可配置的,并允许我发送额外的字段到表单数据的接收文件。尽管没有多个文件选择,但它对于简单的单个文件ajax上传似乎非常完美,并且可以通过文件选择器输入字段的更改事件触发。