0

写真と 4 つの数値 (変数) を php スクリプトに送信したいと考えています。私はJQuery AJAXを使用してそれをやっています。ファイルの送信には、テキスト (データ) の送信に使用される設定とは異なる特定の設定が必要であるため、2 つの 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 は設定された変数です。データは正しく送信されています - firebug によって確認されました。

さて、いくつかの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 オブジェクトを 2 つの異なるスクリプトに送信すると、var_dumps は $_GET および $_FILES 配列の正しい内容を表示します。

1 つの 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 に答える