我正在练习我的jQuery技能(好的,也学习)并遇到了一个问题。我有一个带文件输入的文件上传表单。我正在使用此插件(http://www.fyneworks.com/jquery/multiple-file-upload/#tab-Uploading)一次上传多个文件。所以我正在使用以下表单输入:
<input type="file" class="multi" name="photo[]" accept="gif|jpg|jpeg|png" maxlength="5"/>
现在......我正在尝试向php文件发送一个AJAX请求来处理上传和服务器端验证:
$('#upload_photos_s').click(function(q){
var photo = $('[name=photo[]]').val();
// Process form
$.ajax({
type: "POST",
url: "upload.php",
data: 'photo[]='+photo,
success: function(html){
alert($('[name=photo[]]').val());
$("#photo_upload_form").html(html);
}
});
return false;
});
使用Firebug时,我可以看到照片[]中只有一个文件。
有什么建议吗?有没有我错过的东西?
此致 汤姆
答案 0 :(得分:1)
目前,您确实只查询第一个photo[]
成员的价值。 photo[].val()
不会返回包含所有值的数组。
您必须浏览photo[]
的每个成员,例如使用each()
来构建值数组。
然而,我不确定这是你想要做什么的正确途径。您知道您正在做的是仅上传文件名,而不是他们的数据吗?
如果没有其他工具(如基于Flash的SWFUPload)的帮助,则无法使用AJAX上传文件。出于安全考虑,这是为了防止脚本直接访问本地文件。
也许您尝试做的最适合表单的target
属性指向<iframe>
的方法。这不会触发页面的重新加载,但仍然以“传统”方式提交表单,允许上传旧文件。
答案 1 :(得分:-1)
在您提供的链接上,有一个名为Ajax的部分,指定最简单的方法是使用jQuery Form Plugin。
插件的文档通常有很多帮助^^。
度过愉快的一天:)