同时使用AJAX $ _FILES和$ _POST

时间:2012-08-09 11:01:21

标签: javascript jquery ajax post file-upload

我正在尝试将产品添加到数据库中,还有一些图片,服务器端是PHP。我想通过AJAX异步上传所有内容。我希望在产品ID(thumbs/productID)之后保存在目录名称中的图片。

第一部分是提交产品信息并检索其ID。但是,在上传文件时,我无法上传文件和字符串,以通知我的脚本在哪个文件夹中保存。但是我只能发送文件。

有没有办法同时发送文件和文字?任何帮助将不胜感激。

$('#register-product').on('submit', function ( evt ) {
    evt.preventDefault();
    var i = 0, len = document.getElementsByName("images").length-1, reader, file;
    var myFiles = document.getElementsByName("images");
    // Adds all files to formdata
    for ( ; i < len; i++ ) {
        file = myFiles[i].files[0];
        if (!!file.type.match(/image.*/)) {
            if ( window.FileReader ) {
                reader = new FileReader();
                reader.readAsDataURL(file);
            }
            if (formdata) {
                formdata.append("images[]", file);
            }
        }   
    }
    // Send data to the server.
    if (formdata) {
        $.ajax({ 
            url: "upload.php",
            type: "POST",
            // data: formdata, // This is correct
            data: {formdata, id: 1}, // This doesn't work
            processData: false, 
            contentType: false,
            success: function (res) {
                console.log(res);
            }
        });
    }
});

2 个答案:

答案 0 :(得分:1)

只需在formdata中附加另一个值:

//...
formdata.append("id", 1);
if (formdata) { //...

您可以通过$ _POST [“id”]来访问它。

答案 1 :(得分:1)

您无法使用AJAX发布请求发送文件。

不会发送文件的标题数据。

所以你需要做一些iframe技巧或使用文件API。

相关问题