0

ajaxを使用してファイルを配列にロードし、分割した後、ファイルを再度ファイルに保存する必要があります。これはすべて、ボタンをクリックするだけで行われます。

function updatetags(){

 var alreadyexistingtags;
 var responsetext;

 var r2 = new XMLHttpRequest();
 r2.open('GET', 'tagsupdated.txt', true);
 r2.send(null);

 r2.onreadystatechange = function() {
    if (r2.readyState == 4 && r2.status==200) {

        responsetext=r2.responseText;

        alreadyexistingtags=responsetext.split(' ');
        }       
  }
 }

javascriptsはサーバー側ではないことを理解しているので、やりたいことができないのですが、既存のtags[]をtagsupdated.txtに書き込む方法があるはずです。もしそうなら、ページがロードされたときにPHPが実行され、ボタンが押されるのを待つ必要がある場合、それはどのように可能ですか?

4

2 に答える 2

3

データをサーバーに送り返すには、AJAXまたはその他の方法を使用する必要があります。サーバーは、ファイルを書き出すことができます。

これを行うには、サーバー上に新しいスクリプト、たとえばwritearray.phpを作成します。これは、Javascript配列を入力として受け入れます。次に、AJAXを使用して、配列とともにそのファイルにリクエストを送信します。

PHPファイルは次のようになります(これは非常に単純化された例です)。

<?php
file_put_contents("where_you_want_the_file.txt", $_POST['array']);
?>

Javascript配列をスペースで区切られたリストとして格納しているように見えるため、Javascriptは次のようになります。

var str = your_array.join('%20');   // URL encoded spaces separating array entries
var params = "array=" + str;
var http = new XMLHttpRequest();
http.open("POST", "your_script.php", true);

//Send the proper header information along with the request
http.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
http.setRequestHeader("Content-length", params.length);
http.setRequestHeader("Connection", "close");

http.onreadystatechange = function() {
    if(http.readyState == 4 && http.status == 200) {
        // Do something on success?
    }
}
http.send(params);

これが機能する方法は、JavaScript配列のテキスト表現を保持するarrayという名前のフィールドを使用してPOSTを送信することです。PHPコードは、$ _ POST ['array']をチェックしてこの値を取得し、それをファイルに書き込みます。

より複雑なことをしたい場合は、JSONの使用を検討する必要があることに注意してください。また、いつものように、ユーザーデータの操作には細心の注意を払ってください。

于 2012-08-24T13:10:06.680 に答える
0

データを送信するには、別のajaxクエリを実行する必要がありますが、.sendメソッドでは、データを含む文字列を渡す必要があります。例:

 var r3 = new XMLHttpRequest();
 r3.open('POST', 'writeTextWithoutTags.php', true);
 var data_string='text='+alreadyexistingtags+'&etcParams='+etc_you_params;
 r3.onreadystatechange = function()
 {
   if (r3.readyState == 4 && r3.status==200)
   {
     alert(r3.responseText);//write result
   }       
 }
 r3.send(data_string);

既存のタグ変数を送信する前に、配列を区切り文字付きの文字列に、またはJSON文字列にインプロポーズする必要があります。しかし、writeTextWithoutTags.phpでは、javascriptがibユーザーブラウザを実行し、データがyavastsriptから送信され、侵入者の処理が行われていないことを確認できないため、ypuはデータをチェックする必要があります。

PS PHPにアクセスできる場合、私は理解していません。なぜあなたがここにいるのかわかりません。

于 2012-08-24T14:34:58.973 に答える