通过JQuery AJAX一起发送FormData和String数据吗?

我该如何发布文件并输入字符串数据FormData()?例如,我还有许多其他 ,需要将它们发送到服务器,

html,

<form action="image.php" method="post" enctype="multipart/form-data">

<input type="file" name="file[]" multiple="" />

<input type="hidden" name="page_id" value="<?php echo $page_id;?>"/>

<input type="hidden" name="category_id" value="<?php echo $item_category->category_id;?>"/>

<input type="hidden" name="method" value="upload"/>

<input type="hidden" name="required[category_id]" value="Category ID"/>

</form>

使用下面的这段代码,我仅设法发送文件数据 发送隐藏的输入数据。

jQuery,

// HTML5 form data object.

var fd = new FormData();

var file_data = object.get(0).files[i];

var other_data = $('form').serialize(); // page_id=&category_id=15&method=upload&required%5Bcategory_id%5D=Category+ID

fd.append("file", file_data);

$.ajax({

url: 'add.php',

data: fd,

contentType: false,

processData: false,

type: 'POST',

success: function(data){

alert(data);

}

});

server.php

print_r($_FILES);

print_r($_POST);

结果,

Array

(

[file] => Array

(

[name] => xxx.doc

[type] => application/msword

[tmp_name] => C:\wamp\tmp\php7C24.tmp

[error] => 0

[size] => 11776

)

)

我希望得到这个结果,

Array

(

[file] => Array

(

[name] => xxx.doc

[type] => application/msword

[tmp_name] => C:\wamp\tmp\php7C24.tmp

[error] => 0

[size] => 11776

)

)

Array

(

[page_id] => 1000

[category_id] => 12

[method] => upload

...

)

可能吗?

回答:

var fd = new FormData();

var file_data = $('input[type="file"]')[0].files; // for multiple files

for(var i = 0;i<file_data.length;i++){

fd.append("file_"+i, file_data[i]);

}

var other_data = $('form').serializeArray();

$.each(other_data,function(key,input){

fd.append(input.name,input.value);

});

$.ajax({

url: 'test.php',

data: fd,

contentType: false,

processData: false,

type: 'POST',

success: function(data){

console.log(data);

}

});

添加了一个for循环,并在中将更改.serialize().serializeArray(),以供对象引用.each()附加到FormData

以上是 通过JQuery AJAX一起发送FormData和String数据吗? 的全部内容, 来源链接: utcz.com/qa/398146.html

回到顶部