2016-07-04 21 views
1

問題は、以下のコードが、フォームまたはページに読み込まれた他のHTMLを複製(複製)するように見えるという問題です。ページを2回読み込むオブジェクト

初めて、私はすべての文字(Iは、ページに配置またはその他のHTML)を2回フォームが表示され

を検索テキストボックスに入力すると、削除しかしときに私は、フォームは通常通り表示されたページをロードしますフォームやその他のページの内容を何度でも繰り返して、ページをロードするにはどうすればいいですか?

enter image description here

<?php 
    include('..\db.php'); 
    $con = mysqli_connect($dbsrvname, $dbusername, $dbpassword, $dbname); 
    $q1 = mysqli_query($con, "SELECT * FROM tbl1 username"); 
    $data = ""; 

    // if the search is true 
    if(isset($_POST['search'])) 
    { 
     // 
     $var = $_POST['search']; 

     if ($query = mysqli_query($con,"SELECT username FROMtbl1 WHERE username LIKE '%$var%'")) 
     { 
      // possible creating duplicate results 
      while($row = mysqli_fetch_array($query)) 
      { 
       $data .= '<div>' . $row['username'] . '</div>'; 
      } 
      echo $data; 
     } 
    } 
    else 
    { 
    } 
?> 
<HTML> 
<head> 
    <script src="https://code.jquery.com/jquery-3.0.0.js" integrity="sha256-jrPLZ+8vDxt2FnE1zvZXCkCcebI/C8Dt5xyaQBjxQIo=" crossorigin="anonymous"></script> 
    <script> 
     $(function() { 
      $('.input').keyup(function() { 
       var a = $('.input').val(); 
       $.post('livesusers.php', { "search": a }, function(data) { 
        $('#display').html(data); 
       }); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    // form to input text and search 
    <h1>Search For User</h1> 
    <form action= "livesusers.php" method='POST'> 
     <input type="text" name="search" class='input'> 
    </form> 
    <div id='display' style='margin-top: 100px'></div> 
</body> 

答えて

1

あなたは、現在のページにAJAX要求を作っているため、問題がある、これを試してみてください。要求の応答にはPHPコードとその下のHTMLが含まれているため、現在のページは完全にクローンされています。これを修正するには、PHPコードを独自のファイルに置き、その場所にAJAXリクエストを作成するだけです。これは、より堅牢なあなたはJSONを返すようにPHPコードを変更することを検討すべきであるようにするには

response.php(何が好き、この名前を付ける)

<?php 
    include('..\db.php'); 
    $con = mysqli_connect($dbsrvname, $dbusername, $dbpassword, $dbname); 
    $q1 = mysqli_query($con, "SELECT * FROM tbl1 username"); 
    $data = ""; 

    // if the search is true 
    if(isset($_POST['search'])) 
    { 
     // 
     $var = $_POST['search']; 

     if ($query = mysqli_query($con,"SELECT username FROMtbl1 WHERE username LIKE '%$var%'")) 
     { 
      // possible creating duplicate results 
      while($row = mysqli_fetch_array($query)) 
      { 
       $data .= '<div>' . $row['username'] . '</div>'; 
      } 
      echo $data; 
     } 
    } 
    else 
    { 
    } 
?> 

display.php

<!DOCTYPE HTML> 
<html> 
<head> 
    <script src="https://code.jquery.com/jquery-3.0.0.js" integrity="sha256-jrPLZ+8vDxt2FnE1zvZXCkCcebI/C8Dt5xyaQBjxQIo=" crossorigin="anonymous"></script> 
    <script> 
     $(function() { 
      $('.input').keyup(function() { 
       var a = $('.input').val(); 
       // change the page name below as required... 
       $.post('response.php', { "search": a }, function(data) { 
        $('#display').html(data); 
       }); 
      }); 
     }); 
    </script> 
</head> 
<body> 
    <h1>Search For User</h1> 
    <form action= "livesusers.php" method='POST'> 
     <input type="text" name="search" class='input'> 
    </form> 
    <div id='display' style='margin-top: 100px'></div> 
</body> 
</html> 

:これを試してみてくださいエンコードされていない文字列ではありません。その方法のデモンストレーションについては、this questionを参照してください。

+0

ありがとうございます。優れたアドバイスと作品 –

0

次のコードは、問題があり、それが二回自分自身にデータを追加しています!

$data .= $data . '<div>' . $row['username'] . '</div>'; 

代わり

$data .= '<div>' . $row['username'] . '</div>'; 
+0

申し訳ありません申し訳ありませんが、以前のエラーから変更しました。上記のコードに更新しました。私は古いコピーを貼り付けました。問題は残っている。 –

関連する問題