0

これで、Ajax 更新 div タグ コードを含む 2 ページの HTML ページと、別のページからのデータの投稿を取得し$_POSTました。2 番目のページは、mysql テーブルからデータを選択する PHP ページです。 AJAX:

function Ajax(){
var xmlHttp;
    try{    
        xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
    }
    catch (e){
        try{
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
        }
        catch (e){
            try{
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e){
                alert("No AJAX!?");
                return false;
            }
        }
    }

xmlHttp.onreadystatechange=function(){
    if(xmlHttp.readyState==4){
        document.getElementById('ReloadThis').innerHTML=xmlHttp.responseText;
        setTimeout('Ajax()',2000);
    }
}
xmlHttp.open("GET","data.php",true);
xmlHttp.send(null);
}

window.onload=function(){
    setTimeout('Ajax()',2000);
}

そのコードはこのdivタグをリロード<div id="ReloadThis"></div>し、ファイルから何を取得しdata.phpてこのdivタグにリロードします。これは素晴らしいことですが、投稿されたデータをリロードするとPHPファイルに投稿されたデータが含まれているという私の問題は失われ、私に表示されますUndefined index. $.postこれを行う方法をGoogleで検索しました.AJAXで使用することがわかりました$.post.その問題に役立ちます.はいの場合、どのように使用できますか?

ありがとう :)

4

1 に答える 1

2

HTTP はステートレス プロトコルです。つまり、サーバーは前のリクエストによって送信されたデータを保存する必要がありません。しかし、明らかに HTTP とは関係なく、さまざまな方法でデータを保存し、必要なときに取得することができます。

質問を正しく理解していれば、2 番目のリクエストでデータが $_POST に返されることを期待しています。it won't be!$_POST は、(通常はフォームまたは ajax から) 送信されたデータをリクエストに対してのみ保持しますcurrent。サーバーへのリクエストごとに結果を保存し続けると、すぐに手に負えなくなります。簡単なものからやや難しいものまで、自由にデータを保存できるメカニズムは他にもあります。

  • $_GET: URL を使用してページ全体にデータを保存し、$_GET 配列を介してそれらにアクセスできます。これは簡単なはずですが、非常に面倒であり、データを永続化するための推奨される方法ではありません。
  • セッション変数: 前述のように、複数のリクエストに対して $_POST にデータを保存することはできません。ただし、しばらくの間 $_SESSION にデータを保持することはできます (設定によって異なりますが、約 24 分かかるクリーンな PHP インストールについては、こちらを参照してください)。その値を任意の値に変更できます。こちら を参照してください。セッション変数は通常、facebook や gmail などのユーザー固有のページを実装する場合に便利です。ドキュメントのセッションについて詳しくは、こちらを参照してください。
  • ファイル: データを Web サーバー上のファイルに保存し、データが必要なときにそれらのファイルを読み取ることができます。しかし、ほとんどの Web アプリは複雑で、あまりにも多くの構造を必要とします。そのような複雑なデータをカスタム ファイルに入れようとするのは、不便ではありません。狂気の沙汰です。
  • データベース: これについてはすでに言及されていますが、適切に使用していれば、それほど問題に遭遇することはなかったはずです。基本的に、ページからデータを取得し、そのデータを $_POST に格納しsave the data in a database(e.g. a mysql database).ます(それが使用している方法である場合) 。実際のところ、$_GET を使用しています。データベースに保存したデータを取得し、返送する必要があります。data.phpdata.php

この回答は、永続性についてまだ十分な知識がないように思われるため、元の質問を超えています。について: 通常のメソッドの代わりにメソッドを$.post使用してサーバーからデータを取得できるようにする jQuery メソッドですが、データベースと対話するスクリプトが必要とするいくつかのパラメーターになります。詳細については、ドキュメントを参照してください。POSTGETit doesn't get data that's in the $_POST array, on the other hand you can pass something to $_POST and the server script can act on that data.


メタ

あなたが提供したコードサンプルは、人々が回答するのに使用できないため、私はあなたを支援するコードサンプルを提供していません. あなたは初心者なので、次のページはより良い質問をするのに役立ちます:

  • Help vampire : (オンライン) コミュニティでしてはいけないことについて話します。エイミー・ホイ
  • 良い質問をする : 良い質問をする方法 (John Skeet 著)。

英語が第一言語でない場合は、他の人が英語を改善しようとしている間、英語について言及し、質問の編集に参加できます。

于 2013-07-21T20:51:46.873 に答える