-2

この PHP コードを使用して、JavaScript クリック イベント ハンドラーが添付されたボタンを作成し、ボタンが押されたときにアラートを表示します。

    <?php

    if(isset($_POST['take-attendance'])){
    $date = date("d/m");
    echo'<center><table><tr><th> Student-Id </th> <th> Name </th> <th>'.$date.'</th></tr>';

    foreach($sheet_data as $row) {

        echo '<tr><td>'.$row['id'].'</td><td>'.$row['name'].'</td><td> <input type = "button"  value = "A" name = "'.$row['id'].'" id = "'.$row['id'].'" class = "apbutton" ></td></tr>';

    }       
     echo '</table></center>';


     echo'<input type="button" name="mark-attendance" id="mark-attendance" value="Mark Attendance" class = "mark-attendance">';

    } 
    ?>
    <script>
    $(".apbutton").on("click", function() {
        var buttonId = $(this).attr("id");

        alert(buttonId);
    }); 

    </script>

関数をさらに実行する際にいくつかの問題に直面しているため、PHPで同じ関数を記述しようとしています。

4

3 に答える 3

2

これは意味がありません。javascript 関数を php 関数に変換したいのはなぜですか?

Javascript は、クライアント側のスクリプト言語を意味します。ページに JavaScript を使用して Web サイトをロードすると、その JavaScript コードがクライアント マシンまたはインターネット ブラウザーを介して実行されますが、それを表示する必要があります。

Web サイトの php スクリプトをロードすると、クライアントでページがレンダリングされる前に php コードが実行されます。PHP の目的は、ユーザーから離れたバックエンド サーバーで実行することです。文字通りに翻訳する方法はありません。あなたができる最善のことは、返される出力にphp出力javascriptコードを持たせることです。

于 2013-07-16T08:05:09.670 に答える
0

anchorボタンをタグに変換し、ボタン ID を href url に追加することで、これを行うことができます。ただし、これによりページがリロードされますが、PHP ソリューションが得られます。明らかに、 用の PHP 関数はありませんalert

于 2013-07-16T08:06:56.103 に答える
0

あなたが与えたコードのスニペットがあなたが持っているすべてであるかどうかはわかりません. 私はそうではないと思います。たとえば、$sheet_data とは何ですか? 私たちは知る方法がありません。あなたが私たちに与えてくれたものから始めて、私はあなたのコードにいくつかの変更を加えました:

  • $sheet_data 配列のいくつかの値をハードコーディングしました
  • いくつかのタグを追加しました: html、head、body
  • jqueryへの参照を追加しました
  • スニペットには、この投稿変数がどのように入力されるかに関する情報が含まれていないため、if ステートメントを削除しました (フォームなし、送信なしなど)。

その結果は以下のとおりで、意図したとおりに機能します。したがって、これらの 4 つの変更のうちの 1 つに、あなたが間違っていることの手がかりが含まれている可能性があります。

<html>
  <head>
    <script src="http://code.jquery.com/jquery-1.9.1.min.js"></script>
  </head>
  <body>
<?php

    $sheet_data[] = array('id' => 1, 'name' => 'Bart');
    $sheet_data[] = array('id' => 2, 'name' => 'Mark');
    $sheet_data[] = array('id' => 3, 'name' => 'Paul');

    date_default_timezone_set('Europe/Brussels');
    $date = date("d/m");
    echo'<center><table><tr><th> Student-Id </th> <th> Name </th> <th>'.$date.'</th></tr>';

    foreach($sheet_data as $row) {

        echo '<tr><td>'.$row['id'].'</td><td>'.$row['name'].'</td><td> <input type = "button"  value = "A" name = "'.$row['id'].'" id = "'.$row['id'].'" class = "apbutton" ></td></tr>';

    }       
     echo '</table></center>';


     echo'<input type="button" name="mark-attendance" id="mark-attendance" value="Mark Attendance" class = "mark-attendance">';


    ?>
    <script>
    $(".apbutton").on("click", function() {
        var buttonId = $(this).attr("id");

        alert(buttonId);
    }); 

    </script>
  </body>
</html>

個人的には、スクリプト ブロックを head タグの間に置き、追加し$( document ).ready()ます。詳細については、 http://learn.jquery.com/using-jquery-core/document-ready/を参照してください。

データベースにデータを取得するために ajax が必要なのは間違いありませんが、Ajax 機能を開始するためのトリガーとしてクリック イベントをキャッチする必要があります。ajax 呼び出しにalert(buttonId);置き換えられる行です。

于 2013-07-16T08:31:30.173 に答える