我正在使用表单数据将图像发送到服务器。
//create form data from form
var formData = new FormData($('#my-form')[0]);
//append the image
formData.append('file', myFile);
//add data from crop plugin
formData.append('file-data', cropData);
//POST
$.ajax({
url: /upload,
type: 'POST',
dataType: 'json',
processData: false,
contentType: false,
data: formData
})
当我尝试从裁剪插件中添加数据时出现问题,它记录正常:
Object {x: 140, y: 273.49999999999994, width: 520, height: 520, rotate: 0}
但是一旦在PHP中发布,它就会转储为没有属性的空数组。
我哪里错了?
答案 0 :(得分:3)
您不能将普通对象作为append
对象上FormData
的第二个参数传递给"[object Object]"
。 (嗯,你可以,但它会被字符串化,通常会给你for (var prop in cropData) {
if (cropData.hasOwnProperty(prop)) {
formData.append('file-data[' + prop + ']', cropData[prop]);
}
}
)。
您需要单独添加每个数据。您可以使用PHP的命名约定来获取另一端的数组。
{{1}}
答案 1 :(得分:1)
var temp = Object {x: 140, y: 273.49999999999994, width: 520, height: 520, rotate: 0}
JSON.stringify(temp)
// that will be ok looks in php in json_decode($_POST['data'])
$.ajax({
url: '/upload',
type: 'POST',
dataType: 'json',
processData: false,
contentType: false,
data: JSON.stringify(temp)
})
并在php中:
$data = json_decode( $_POST['data'] ) ;
答案是 - 你必须在发送到php之前将对象/哈希从js转换为json。