我想向php脚本发送一张照片和四个数值(变量)。我正在使用JQuery AJAX。我必须使用两个XHR对象,因为发送文件取决于与用于发送文本 - 数据的设置不同的特定设置。这是相关的JS代码:
//sending a photo
$.ajax({
type: "POST",
url: "upload.php",
data: data,
cache: false,
contentType: false,
processData: false,
success: function(data) {alert (data);}
});
//sending variables
$.ajax({
url: "upload.php",
data: {
x1: x1,
y1: y1,
x2: x2,
y2: y2
},
success: function(data) {alert(data)}
});
x1,x2,y3,y4是设定的变量。 数据发送正确 - 由萤火虫确认。
现在,一些PHP代码:
<?php
$x1 = $_GET['x1'];
$y1 = $_GET['y1'];
$x2 = $_GET['x2'];
$y2 = $_GET['y2'];
$file= $_FILES['file'];
var_dump($_GET);
var_dump($file);
?>
这是我的问题。 var_dump($ file)给出了理想的结果,但变量$ x1,$ x2,$ y1,$ y2为空。带照片的XHR对象会删除$ _GET数组的内容。当我将这些XHR对象发送到两个不同的脚本时,一切都是有序的,var_dumps显示$ _GET和$ _FILES数组的正确内容。
我想在一个PHP脚本中有照片和变量。变量是裁剪照片片段所需的坐标。有可能吗?
问候。
答案 0 :(得分:0)
正如mansoulx在评论中写的那样我把照片(数据变量)和变量(x1,x2,y1,y2变量)放在同一个FormData对象中:
var data = new FormData();
data.append('file', files[files.length-1]);
data.append('coordinates', $('#form').serialize());
我正在使用AJAX发送数据变量:
$.ajax({
type: "POST",
url: "upload.php",
data: data,
cache: false,
contentType: false,
processData: false,
success: function(data) {alert (data);}
});
一切正常,问题解决了:)