1

私のajaxが処理されるとき

$.post("main.php", 
          {data: $(this).text()}, 
          function(data) {
               //alert("Data saved.");
               $('#demo').html(data);
          });   

以下のクエリで指定したものを取得する代わりに

if (isset($_POST['data'])){
$data = $_POST['data'];

    $query = mysql_query("SELECT * FROM tempusers
    WHERE 'firstname' LIKE '%$data%' 
        OR 'lastname' LIKE '%$data%' 
        OR 'title' LIKE '%$data%'");

    while($row=mysql_fetch_assoc($query)){
                $firstname=$row['firstname'];
                $lastname=$row['lastname'];
                $grade=$row['grade'];


    echo $grade;

代わりに、ページ内のすべての要素が返されます。つまり、下の div で

 <div id="demo"></div>

マイページに戻ります。したがって、Web サイト内の Web サイトとして表示されます。echo $grade;クエリが動作していると思っていたことが表示されませんが、クエリをコメントアウトして、echo $data 以下を参照してください

if (isset($_POST['data'])){
$data = $_POST['data'];
echo $data; 

そうすることで、前述の「ウェブサイト内でウェブサイトをエコーアウトする」と同じ結果が得られ、必要な $data もエコーされました。これがどのように発生したか、およびこの問題を修正して isset 関数/ajax を修正するために何ができるかを理解したいと思います。他のヒントは大歓迎です。クエリを PDO に変更して計画する必要があることはわかっています。

4

3 に答える 3

0

必要なものをエコーし​​た後、明示的な終了を設定して、それ以降のスクリプトの実行を終了します。

 echo $grade;
 exit;

グレードエコーがループ内にある場合は、ループ終了後に出口を配置します。

于 2012-11-05T18:51:48.630 に答える
0

エコーを作成すると、ajaxはそれを応答として受け取り、接続を閉じます(したがって、サーバーから1つの回答のみを受け取ります)。

だから私のアドバイスは、エコーする前にすべての値を連結することです。jsonのエンコードとデコードを使用して、値を渡し、表示することができます。

Jsonエンコードphp=> http://php.net/manual/es/function.json-encode.php

Javascript json decode => JavaScriptで配列要素をJSONデコードする方法は?

于 2012-11-05T18:54:11.037 に答える
0

問題は、「データ」をエコーし​​ており、その「データ」が次のように送信されていることです。

 {data: $(this).text()}, 

問題は this.text にあります。あなたがこれを言うとき、あなたは何を指していますか? ウェブサイト全体を取得して送信し、それを返し、div に投稿する必要があります。

最初にこれを試してください:

 {data: "test"},

返された結果が「test」の場合、問題は jQuery がすべてを送信していることです。$(this) を削除して $("#someid").html(); に置き換えることで修正できます。

于 2012-11-05T20:00:55.500 に答える