0

我想向 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 脚本中包含照片和变量。变量是裁剪照片片段所需的坐标。有没有可能?

问候。

4

1 回答 1

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);}
});

一切正常,问题解决:)

于 2013-10-08T11:58:55.033 回答