2013-07-16 54 views
-2

我有這個PHP代碼來創建一個附加的JavaScript單擊事件處理程序的按鈕,以便在按下按鈕時顯示警報。如何在javascript中爲給定的函數編寫等價的php函數?

<?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中,因爲我在進一步執行函數時遇到了一些問題。

+2

你需要在PHP中做什麼?抓住一個按鈕點擊並顯示一個消息框?它不能在沒有JavaScript的純PHP中完成,因爲PHP是服務器端,但按鈕點擊發生在客戶端。 –

+0

我想抓住按鈕點擊在PHP中,因爲它不只是獲取按鈕ID,但我想存儲每個按鈕單擊數組中的每個按鈕,然後將其存儲在MySQL數據庫中。 – user2492144

+0

所有在相同的功能 – user2492144

回答

2

這沒有意義。爲什麼你想要將一個javascript函數轉換爲一個php函數?

JavaScript是指客戶端腳本語言。當您在頁面上使用JavaScript加載網站時,該JavaScript代碼是通過客戶端計算機或Internet瀏覽器運行的,但是您想要查看它。

當您爲網站加載php腳本時,在客戶端上呈現頁面之前執行php代碼。 php的目的是在遠離用戶的後端服務器上運行。沒有辦法直接翻譯它。最好的辦法是在返回的輸出中輸出php代碼。

+0

你經常執行類似的任務,尤其是當你不想等待表單提交之前知道它的錯 – exussum

+0

是的但PHP不像那樣的工作,它不是這樣工作的。我想我有一個想法你想要什麼,但是這不是解決問題的方法。在這裏看看Ajax:[鏈接](http://en.wikipedia.org/wiki/Ajax_(編程)) –

+0

「你能做的最好的就是在返回的輸出中有php輸出javascript代碼」你能幫我進一步ñ雅是真的沒有辦法處理一個按鈕點擊事件的動態生成的按鈕在PHP ??我不明白 – user2492144

0

您可以通過將該按鈕變成anchor標籤並將按鈕ID添加到href網址來完成此操作。但是,這會重新加載頁面,但是您將擁有一個PHP解決方案。顯然,alert沒有PHP功能。

+0

謝謝,但我不想使用錨 – user2492144

0

我不知道你給出的代碼片段是否是你所擁有的。我不假設。例如,什麼是$ sheet_data?我們無法知道。 從你給我們我已經做了一些改動你的代碼開始:

  • 我已經硬編碼爲$ sheet_data陣列
  • 我增加了一些標籤的一些值:HTML,頭部和身體
  • 我添加了一個參考的jQuery
  • 我刪除if語句作爲你的段不包含對這個職位變量被如何填寫任何信息(沒有形式,沒有提交,...)

的結果那是低,並按照你的意圖工作。因此,如果它不適合你,那麼這四項變化中的一項可能會包含你做錯事情的線索。

<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將數據導入數據庫是正確的,但仍然需要捕獲click事件作爲啓動ajax功能的觸發器。這是alert(buttonId);行,將被ajax調用取代。

+0

yaa我真的需要學習ajax,謝謝! – user2492144

相關問題