jQuery AJAX Form,无法发送数组?

时间:2010-06-29 09:04:18

标签: ajax jquery

我正在练习我的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时,我可以看到照片[]中只有一个文件。

有什么建议吗?有没有我错过的东西?

此致 汤姆

2 个答案:

答案 0 :(得分:1)

目前,您确实只查询第一个photo[]成员的价值。 photo[].val()不会返回包含所有值的数组。

您必须浏览photo[]的每个成员,例如使用each()来构建值数组。

然而,我不确定这是你想要做什么的正确途径。您知道您正在做的是仅上传文件名,而不是他们的数据吗?

如果没有其他工具(如基于Flash的SWFUPload)的帮助,则无法使用AJAX上传文件。出于安全考虑,这是为了防止脚本直接访问本地文件。

也许您尝试做的最适合表单的target属性指向<iframe>的方法。这不会触发页面的重新加载,但仍然以“传统”方式提交表单,允许上传旧文件。

答案 1 :(得分:-1)

在您提供的链接上,有一个名为Ajax的部分,指定最简单的方法是使用jQuery Form Plugin。

插件的文档通常有很多帮助^^。

度过愉快的一天:)