Helpex - Trao đổi & giúp đỡ Đăng nhập
80

Tôi đang tìm kiếm một giải pháp đơn giản để gọi hàm PHP chỉ khi nhấp vào thẻ .

PHP:

function removeday() { ... }

HTML:

<a href="" onclick="removeday()" class="deletebtn">Delete</a>

CẬP NHẬT: mã html và PHP nằm trong cùng một tệp PHP

80 hữu ích 4 bình luận 610k xem chia sẻ
126

Trước tiên, hãy hiểu rằng bạn có ba ngôn ngữ làm việc cùng nhau.

  • PHP: Chỉ được điều hành bởi máy chủ và trả lời các yêu cầu như nhấp vào liên kết (GET) hoặc gửi biểu mẫu (POST).

  • HTML & JavaScript: Chỉ được chạy trong trình duyệt của ai đó (không bao gồm NodeJS).

Tôi giả sử tập tin của bạn trông giống như:

<html>
<?php
  function runMyFunction() {
    echo 'I just ran a php function';
  }

  if (isset($_GET['hello'])) {
    runMyFunction();
  }
?>

Hello there!
<a href='index.php?hello=true'>Run PHP Function</a>
</html>

Vì PHP chỉ đáp ứng các yêu cầu (GET, POST, PUT, PATCH và DELETE qua $ _REQUEST), đây là cách bạn phải chạy một hàm PHP mặc dù chúng nằm trong cùng một tệp. Điều này cung cấp cho bạn một mức độ bảo mật, "Tôi có nên chạy tập lệnh này cho người dùng này hay không?".

Nếu bạn không muốn làm mới trang, bạn có thể yêu cầu PHP mà không cần làm mới thông qua phương thức có tên là JavaScript không đồng bộ và XML (AJAX).

Đó là một cái gì đó bạn có thể tìm kiếm trên YouTube mặc dù. Chỉ cần tìm kiếm "jquery ajax"

Tôi giới thiệu Laravel cho bất kỳ ai mới bắt đầu ngay: http://laravel.com/

126 hữu ích 5 bình luận chia sẻ
34

Trong javascript, tạo một hàm ajax,

function myAjax() {
      $.ajax({
           type: "POST",
           url: 'your_url/ajax.php',
           data:{action:'call_this'},
           success:function(html) {
             alert(html);
           }

      });
 }

Sau đó gọi từ html,

<a href="" onclick="myAjax()" class="deletebtn">Delete</a>

Và trong ajax.php của bạn,

if($_POST['action'] == 'call_this') {
  // call removeday() here
}
34 hữu ích 2 bình luận chia sẻ
12

Bạn sẽ phải làm điều này thông qua AJAX . Tôi rất khuyến khích bạn sử dụng jQuery để giúp bạn dễ dàng hơn ....

$("#idOfElement").on('click', function(){

    $.ajax({
       url: 'pathToPhpFile.php',
       dataType: 'json',
       success: function(data){
            //data returned from php
       }
    });
)};

http://api.jquery.com/jQuery.ajax/

12 hữu ích 4 bình luận chia sẻ
9

Nó có thể được thực hiện và với php khá đơn giản nếu đây là nút của bạn

<input type="submit" name="submit>

và đây là mã php của bạn

if(isset($_POST["submit"])) { php code here }

mã được gọi khi gửi get được đăng, xảy ra khi nhấp vào nút.

9 hữu ích 1 bình luận chia sẻ
1

Hãy thử làm một cái gì đó như thế này:

<!--Include jQuery-->
<script type="text/javascript" src="jquery.min.js"></script> 

<script type="text/javascript"> 
function doSomething() { 
    $.get("somepage.php"); 
    return false; 
} 
</script>

<a href="#" onclick="doSomething();">Click Me!</a>
1 hữu ích 0 bình luận chia sẻ
0

Đây là cách dễ nhất có thể. Nếu hình thức được đăng qua bài viết, làm chức năng php. Lưu ý rằng nếu bạn muốn thực hiện chức năng không đồng bộ (không cần tải lại trang), thì bạn sẽ cần AJAX.

<form method="post">
    <button name="test">test</button>
</form>

    <?php
    if(isset($_POST['test'])){
      //do php stuff  
    }
    ?>
0 hữu ích 1 bình luận chia sẻ
0

Hãy thử nó sẽ hoạt động tốt.

<script>
function echoHello(){
 alert("<?PHP hello(); ?>");
 }
</script>

<?PHP
FUNCTION hello(){
 echo "Call php function on onclick event.";
 }

?>

<button onclick="echoHello()">Say Hello</button>
0 hữu ích 1 bình luận chia sẻ
loading
Không tìm thấy câu trả lời bạn tìm kiếm? Duyệt qua các câu hỏi được gắn thẻ javascript php ajax onclick , hoặc hỏi câu hỏi của bạn.

Có thể bạn quan tâm

loading