Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/79.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
Php 使用ajax提交文件的数量_Php_Jquery - Fatal编程技术网

Php 使用ajax提交文件的数量

Php 使用ajax提交文件的数量,php,jquery,Php,Jquery,我有带文本字段和文件的表单 我正在尝试用ajax提交表单并上传文件。问题是,当我打印ajax文件(attractions control.php)中的文件数据时,我什么也没有得到: array (size=2) 0 => string '' (length=0) 1 => string '' (length=0) 我怎样才能解决这个问题 JS部分 e.preventDefault(); var formData = $(this).closest('form').seri

我有带文本字段和文件的表单

我正在尝试用ajax提交表单并上传文件。问题是,当我打印ajax文件(attractions control.php)中的文件数据时,我什么也没有得到:

array (size=2)
  0 => string '' (length=0)
  1 => string '' (length=0)
我怎样才能解决这个问题

JS部分

e.preventDefault();

var formData = $(this).closest('form').serializeArray();
formData.push({name: 'act', value: 'edit'});        


var file_data = $(this).parents("form").find('.multi').prop('files');   



var filesArray = $(this).parents("form").find('.multi');
jQuery.each(filesArray, function(i, fileArray) 
{
    var files = fileArray.files;
    var file;
    formData.push({name: 'file[]', value: file});   
});



$.ajax ({
  type: 'POST',
  url: 'ajax/attractions-control.php',
  data: formData,
  dataType    : 'json',
  async: false,
  code        : true
}).done(function(data) 
{
}
HTML部分

<form id="attrac-form-<?PHP echo $mainIndex['id'] ?>" action="#"  method="post" enctype="multipart/form-data" class="attrac-form">

      <input type="text" name="title" >

      <input type="file" name="file[]" class="multi">

      <input type="file" name="file[]" class="multi">

      <input type="file" name="file[]" class="multi">

      <input class="attrac-submit" value="SEND" type="submit" >

</form> 

使用FormData对象:

$.ajax ({
    type: 'POST',
    url: 'ajax/attractions-control.php',
    data: new FormData($('form')[0]),
    cache: false,
    contentType: false,
    processData: false,
    async: false
})
这将向您发送此结构中的内容:

-----------------------------951861112078
Content-Disposition: form-data; name="sdfer"

0
-----------------------------951861112078
Content-Disposition: form-data; name="sfd"; filename=""
Content-Type: application/octet-stream


-----------------------------951861112078
Content-Disposition: form-data; name="zre"

0
-----------------------------951861112078

您可以通过PHP中的$_文件获取,并且所有表单都将包含,因此所有输入类型的文本(例如)也可以使用$_POST访问。请使用FormData对象:

$.ajax ({
    type: 'POST',
    url: 'ajax/attractions-control.php',
    data: new FormData($('form')[0]),
    cache: false,
    contentType: false,
    processData: false,
    async: false
})
这将向您发送此结构中的内容:

-----------------------------951861112078
Content-Disposition: form-data; name="sdfer"

0
-----------------------------951861112078
Content-Disposition: form-data; name="sfd"; filename=""
Content-Type: application/octet-stream


-----------------------------951861112078
Content-Disposition: form-data; name="zre"

0
-----------------------------951861112078
您可以通过PHP中的$_文件获得,并且所有表单都将包括在内,因此所有输入类型的文本,例如,也可以使用$_POST访问。这对我很有用

Javascript:

var form = $(this).closest('form')[0]; // derived from your code

// remove empty file inputs from form otherwise some browsers throw error 
for (i = 0; i < form.elements.length; i++) {
  if (form.elements[i].type == 'file') {
    if (form.elements[i].value == '') {
      form.elements[i].parentNode.removeChild(form.elements[i]);
    }
  }
}

var formData = new FormData(form);

$.ajax({
        url : "file.php",
        type: "POST",
        data : formData,
        dataType : "json",
        contentType: false,
        cache: false,
        processData:false
    })
.done(function(data) {
    console.log(data);
});
这对我有用

Javascript:

var form = $(this).closest('form')[0]; // derived from your code

// remove empty file inputs from form otherwise some browsers throw error 
for (i = 0; i < form.elements.length; i++) {
  if (form.elements[i].type == 'file') {
    if (form.elements[i].value == '') {
      form.elements[i].parentNode.removeChild(form.elements[i]);
    }
  }
}

var formData = new FormData(form);

$.ajax({
        url : "file.php",
        type: "POST",
        data : formData,
        dataType : "json",
        contentType: false,
        cache: false,
        processData:false
    })
.done(function(data) {
    console.log(data);
});

尝试使用FormData()对象,如
newformdata($('form')[0])
,您将拥有所有的内部文件,并且您的文件将可以与$\u文件一起使用。我认为这会很好,但我不确定如何做。你能给我举个例子吗@MacBooctry要使用FormData()对象,如
newFormData($('form')[0])
,您将拥有所有的内部文件,并且您的文件将可以与$\u文件一起使用。我认为这会很好,但我不确定如何做。你能给我举个例子吗@MacBoocIf如果我想在帖子中添加参数,我该怎么做?在上面的代码中,我使用了
formData.push({name:'act',value:'edit'})formData.push({name:'act',value:'edit'})