0

データベースへの ajax 呼び出しを行って、データを返す状況があります。データはテーブル形式で div に入ります。行をクリックできるようにしたいと思います。これは、Web 上で毎日何十億回も行われている単純なプロセスです (姓の部分一致でデータベース内の人を見つけます)。

プロジェクトの他の 5 つのページでは、データベースから情報を読み取り、画面に投稿し、行をクリックして新しいページにリダイレクトすることに問題はありません。違いは、これらのページはページ上に PHP で記述されていることです。問題のこの特定のページは、ユーザーに姓から 1 文字または 2 文字を求め、ajax 呼び出しを実行して div を作成するため、javascript で記述する必要があります。

データを呼び出して書き込むためのコードは次のとおりです。

$.ajax({
  type: "POST",
  url: "findpatientbackend.php",
  data: {letterslastname: lastname},
  dataType : 'json',
  success: function(result) {
     $("#div1").html(""); //make the div blank
     if(result.length >= 1)
       {var output = "";
       $("div1").html("<table id='findtable'>");
       $.each(result, function(index, value) {
            output += "<tr><td width='100px'></td><td id='localid' width='100px'>"
            + value.localid + "</td><td width='100px'>"
            + value.lastname + "</td><td width='100px'>"
            + value.firstname + "</td><td width='100px'>"
            + value.middlename + "</td><td width='100px'>"
            + value.dob + "</td></tr>";
               });
        $("#div1").html(output);
        $("div1").html("</table>");         
        }
         else
        {$("#div1").html("No matches");}
        },
        error : function() { alert("error on return"); }
    });
    });

行を「クリック」するためのコードは次のとおりです (他の 5 つの状況では問題なく動作します)。

$("#findtable tr").click(function() {
   var passthis = $(this).find("#localid").html();
   $.post("php/setsessionvariable.php",
   {sessionval: passthis},
     function(e) {window.location.href = '../root.php'}
          );

私はこれで遊んで遊んだ.click関数は「id = 'findtable''を見ることができないようだ.idからclass、一重引用符、二重引用符、場所の移動そして - 私が考えることができるすべて。IE で「ソースの表示」を実行すると、テーブルとデータ以外はすべて表示されますが、テーブルとデータは画面上に明確に表示されます。

これはプロジェクトを助けるために重要ですが、何が起こっているのかを理解する上で私にとってより重要です. たとえば、次のような基本的なものはありますか。

  1. いいえ、Javascript で書かれたテーブルはクリック可能にできません。PHP を使用してください。(奇妙に聞こえます)。
  2. ティム、Javascript でテーブルを書くときは、x、y、z をしなければなりません! (ありそう)。
  3. いいえ、Tim ではありません。".html" を使用して Javascript でデータを移動することはできません。"X" を使用する必要があります。
  4. 他の何か

昨日、jQuery dataTables ライブラリ (および他の多くのライブラリ) について学びました。おそらく、別の方法を提供してくれるでしょうが、このコードの問題について学びたいと思います。

(PSと.eachコマンドで私を助けてくれた@Shaddowに再び感謝します-とてもいいです!)


内訳は次のとおりです。

$(document).on(
               "click",
             "#findtable td",
             (function() {
                            var passthis = $(this).find("#localid").html();
                            $.post("php/setsessionvariable.pphp",
                                   {sessionval: passthis},
                                   function(e) { window.location.href = '../root.php'; }
                                   );
                            });
                );

.click 関数を実際に動作させる純粋な Javascript テーブルのコードを次に示します。

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN"
"http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html>
<head>
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.4.2/jquery.min.js" type="text/javascript"></script>
<script src="http://ajax.googleapis.com/ajax/libs/jqueryui/1.8.1/jquery-ui.min.js" type="text/javascript"></script>

<style>
#findtable {
    width:200px;
    background-color:#CFD3FE;
    margin:10px auto;
    text-align:center;}
</style>

<body>

<div id="puttablehere"></div>

<script>
$(document).ready(function () {

var output = "<table id='findtable'>";
for (var i = 0; i<38; i++)
{output += "<tr><td width='100px'>X</td><td id='localid' width='100px'>X</td></tr>";}
output += "</table>";

$("#puttablehere").html(output);

$("#findtable tr").click(function(e) { alert("it works!"); });

});
</script>

</body>
</html>
4

1 に答える 1