0

わかりましたので、HTML5 で実験しており、Javascript で単純な「ペイント」アプリケーションを作成して、ユーザーのマウスが画面上のどこにあるかを描画します。正常に動作します。

次に、座標をファイルに保存したいと思いました。私のプログラムには、Javascript コードからの x 座標の配列と y 座標の配列が既にありました。

ユーザーがボタンを押すと、onClick は jQuery を使用する Javascript の関数を呼び出します。こちらのトップ アンサーのように、JavaScript 関数データを PHP 変数に取得する方法では、これを php ファイルに渡して保存しようとします。

しかし、それは機能していません。キャンバスを含む元の php ドキュメントにデータを戻す必要がありますか? もしそうなら、ドキュメントがロードされたときにPHPが実行されるときに保存するコードを実行するにはどうすればよいですか?

コード:

これは、キャンバスを含む Web ページの HTMl を含む元の php ファイルにあります。関連する保存ボタンは次のとおりです。

<button type="button" onclick="saveDrawing()" id="saveButton">Save</button>

これは、別の JS ファイルで以下を呼び出します

function saveDrawing(){
// First check that not drawing and have data
if (!readyToDraw && clickX!=null){  
    // If ready then pass back to the PHP file the data
    $url = 'file_save_test.php';
    $.get($url, {x_coords: getXCoords(), y_coords: getYCoords()});
    }
else {
    alert("Please add some coordinate points and press Finish before saving");
}
}

file_save_test.php には以下のみが含まれます。

<?php

// retrieve data from the JS
$buffer_data['x_coords'] = $_GET['x_coords'];
$buffer_data['y_coords']  = $_GET['y_coords'];

$x_s = $_GET['x_coords'];
$y_s = $_GET['y_coords'];

// first want to open a file
$file_name = "data_test.txt";
$file_handler = fopen($file_name, 'w');

// now to loop through arrays and write!
/*for ($i = 0; $i < sizeof($x_s); i++){
    fwrite($file_handler, "$x_s[i], ");
    fwrite($file_handler, "$y_s[i]\n");
} */


fclose($file_handler);


?>
4

3 に答える 3

1

PHP ファイルでは、fwrite コードがコメントアウトされているようです。そのファイルに書き込むことを期待していdata_test.txtますか?PHP ファイルを変更して結果を出力し、JavaScript にエコー バックして、データが適切に通信されているかどうかを確認してください。

$.get($url, {x_coords: getXCoords(), y_coords: getYCoords()},
    function(data){
        alert("Data Loaded: " + data);
    });

PHP

print_r($_GET);

編集

データを適切に警告している場合は、PHP ファイルを次のように変更します (ファイルに座標を追加する必要があります)。

<?php

// retrieve data from the JS
$x_s = $_GET['x_coords'];
$y_s = $_GET['y_coords'];

$file_name = "data_test.txt";
$file_handler = fopen($file_name, 'a');
fwrite($file_handler, "$x_s, $y_s \n");
fclose($file_handler);

?>

編集2

forループを元のコードに更新します

for ($i = 0; $i < count($x_s); $i++){
    fwrite($file_handler, $x_s[$i] . ", ". $y_s[$i] . "\n");
}
于 2012-03-02T23:15:00.120 に答える
0

私がすることは、保存ボタンで jQuery の$.post()メソッドを呼び出すことです。データベースに挿入するか、ファイルとして保存する別の PHP ファイルにデータをポストします。元のドキュメントを使用してデータを投稿することはお勧めしません。クライアントは DOM 全体をダウンロードする必要があり、サーバーは必要のない他のコードを実行するからです。

あなたのコードを見なくても、私が本当にあなたを助けることができるのはそれだけです.

于 2012-03-02T22:57:01.613 に答える
0

データを saveCoords.php などと呼ばれる新しい php スクリプトに送信します。

JavaScript配列に座標が既にあると言うので、次のようになります...

//JAVASCRIPT FUNCTION which will request php file to store info
function storeCoords(xCoordArray, yCoordArray){
  var xCoords = JSON.stringify(xCoordArray);
  var yCoords = JSON.stringigy(yCoordArray);

  var request = new XMLttpRequest(); //will need to change for older ie 
  request.onreadystatechange = function(){
    //functions to handle returning information from php file..
  }

  request.open("GET","saveCoords.php?xCoords="+xCoords+"&yCoords="+yCoords, true);
  request.send();
}

そして、saveCoords.php ファイルは次のようになります。

<?php
  $xCoords = json_decode($_GET['xCoords']);
  $yCoords = json_decode($_GET['yCoords']);

  //now you have a php array of xCoords and yCoords, which you can store
?>

それはスケルトンですが、主要なポイントに当てはまると思いますが、質問があればコメントしてください。

于 2012-03-02T23:24:13.307 に答える