Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/77.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript AJAX$\文件和$\ POST同时进行_Javascript_Jquery_Ajax_Post_File Upload - Fatal编程技术网

Javascript AJAX$\文件和$\ POST同时进行

Javascript AJAX$\文件和$\ POST同时进行,javascript,jquery,ajax,post,file-upload,Javascript,Jquery,Ajax,Post,File Upload,我正在尝试向数据库中添加产品,以及一些图片,服务器端是PHP。我想通过AJAX异步上传所有内容。我希望图片保存在产品id(thumbs/productID)后面的目录名中 第一部分是提交产品信息并检索其id。但是,在上载文件时,我不能同时上载文件和字符串,以通知脚本要保存在哪个文件夹中。但是,我只能发送文件 有没有办法同时发送文件和文本?任何帮助都将不胜感激 $('#register-product').on('submit', function ( evt ) { evt.preven

我正在尝试向数据库中添加产品,以及一些图片,服务器端是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);
            }
        });
    }
});
$(“#注册产品”)。在('submit',函数(evt)上{
evt.preventDefault();
var i=0,len=document.getElementsByName(“图像”).length-1,读取器,文件;
var myFiles=document.getElementsByName(“图像”);
//将所有文件添加到formdata
对于(;i
只需在formdata中附加另一个值:

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

您可以通过$_POST[“id”]访问它,因为您不需要。

您不能使用AJAX POST请求发送文件

将不发送文件的标题数据


因此,您需要执行一些iframe技巧或使用文件API。

谢谢,这正是我想要的。