1

まず第一に、私の悪い英語で申し訳ありません。私はイタリア人です。私はプログラミングに少し慣れていませんが、私のオフィスでは、少し複雑なスクリプトを作成する必要があります (少なくとも私にとっては)。問題を説明する前に、私が何をしているのかを説明します。

データ入力から画像を作成するキャンバスのスクリプトを作成し、保存プロセスのために画像データを php に送信します。問題は、js 変数の 1 の値も送信する必要があることです (例では value1)。この情報を生の画像データと一緒に渡す方法がわかりません。img の描画と保存のための js コード。value1 を save.php に渡す必要があります

button.addEventListener("click",function(){
            //saving the values of the form
    var value1 = document.getElementById("value1").value;
            //text on the canvas
    var value1X = (maxWidth-ctx.measureText(value1).width)/2+500;
            //drawing the inputed text on the canvas
    ctx.drawImage(img,0,0);
        ctx.fillText(value1,value1X,maxHeight);
            //getting the image url and sending it to save.php for the saving process
        var imageURL = c.toDataURL("image/png");
        var ajax = new XMLHttpRequest();
        ajax.open("POST", 'saving.php', false);
        ajax.setRequestHeader('Content-Type','application/upload');
        ajax.send(imageURL);
 }, false);

PHPファイルは次のとおりです。

<?php
if (isset($GLOBALS[HTTP_RAW_POST_DATA])) {
$imageData = $GLOBALS[HTTP_RAW_POST_DATA];
$imageData = str_replace('data:image/png;base64,', '', $imageData);
$imageData = str_replace(' ', '+', $imageData);
$data = base64_decode($imageData);
    //here i need the value1 value from the javascript
$dirname = "value1";
$filename = "header_top.png";
$newdir = mkdir($dirname);
$path = ("the/path/to".$dirname."/");
$fp = fopen($path.$filename, 'wb');
fwrite($fp, $data);
fclose($fp);
}

あなたが私を助けることができるように、私は自分自身を説明できたことを願っています.

どうもありがとうございました。

編集:私はそれを理解していると思います、私はそれが機能する瞬間を意味しますが、それが正しい方法であるかどうかはわかりません. 実際、私はphpファイルを呼び出しているので、URLの最後に「?dir = + value1」を追加するだけで機能します。

    ajax.open("POST", 'saving.php?dir='+value1, false);
    ajax.setRequestHeader('Content-Type','application/upload');
    ajax.send(imageURL);

PHPファイルでは、単に $_GET['dir'] を呼び出して値を取得します。

@hendrikご回答ありがとうございます。残念ながら、jsonで動作させることができません。おそらく、知らなかったからです。

とにかく、誰かがより良い方法を知っていればいいでしょう。

4

1 に答える 1

0

データを PHP ファイルに送信するには、JSON を使用するのが良い方法だと思います。そうすれば、オブジェクトまたは配列に複数の変数を格納できます。

// Store your data in an Object
var imageData = {
    url: 'http://adsadsf.com',
    name: 'foobar.gif',
    width: 500,
    height: 400,
    directory: 'img/'
}

var ajax = new XMLHttpRequest();
ajax.open("POST", 'saving.php', false);
// Send the imageData object as JSON
ajax.setRequestHeader('Content-Type', 'application/json;charset=UTF-8');
ajax.send(JSON.stringify(imageData));

残念ながら、受信した JSON データを処理する方法を正確に説明するには、PHP について十分な知識がありませんが、そのjson_decode方法を使用できると思います。

JSON の詳細: http://www.json.org/js.html

于 2013-06-03T11:23:58.130 に答える