$('#btn').on('click',function(){
var file_data = $('#imgFile').prop('files')[0];
var form_data = new FormData();
let jsonObj = {
'label1':'value1'
};
form_data.append('file',file_data);
form_data.append('json',jsonObj);//json object which I am trying to send
$.ajax({
url: 'uploader.PHP',cache: false,contentType: false,processData: false,data: form_data,type: 'post',success: function(PHP_script_response){
console.log(PHP_script_response);
}
});
});
在PHP中我能够成功检索ajax调用中发送的文件,但我不知道如何访问与该文件一起发送的json对象
PHP
if ( 0 < $_FILES['file']['error'] ) {
echo 'Error: ' . $_FILES['file']['error'] . '
请让我知道如何在PHP中检索json对象
最佳答案
首先,请注意您只能通过FormData.append()方法追加二进制数据或字符串.提供一个对象意味着将在其上调用toString(),因此该值实际上将变为“[object Object]”.
原文链接:https://www.f2er.com/jquery/427804.html要修复此问题,您需要在追加()之前手动JSON.stringify对象:
let obj = {
'label1':'value1'
};
form_data.append('file',file_data);
form_data.append('json',JSON.stringify(obj));
然后在PHP中,您可以使用json_decode()对JSON进行反序列化.
但是,直接将值附加到FormData对象会简单得多.这样您就不需要手动序列化/反序列化任何东西:
form_data.append('file',file_data);
form_data.append('label1','value1');
form_data.append('foo','bar');
然后在你的PHP中:
var label = $_POST['label'];
var foo = $_POST['foo'];