繁体   English   中英

使用 onclick 事件调用 php 函数?

[英]Call php function with onclick event?

我想从数据库中删除项目。删除之前我想确认用户是否要删除。如果用户点击确定它必须调用删除功能。但是在用户单击该功能的代码中,不仅用户被调用点击ok,但也点击concel。对于其他alter语句,它工作正常。对于调用php函数,只有它会出现问题。

我该如何解决这个问题?

代码是,

<a href="http://localhost/Performance/project/ShowAllProjects.php?project_id='.$row['project_id'].'"><img src="http://localhost/performance/css/delete.png" title="delete"  alt="running test" style="width:15px;height:15px;border:0;margin-left:1cm" Onclick="deleteProject();"/></a>

<script>
    function deleteProject() {      
        var r = confirm("Press a button!");
        if (r == true) {
            //alert("You pressed OK!");
            alert("<?php confirmDelete(); ?>"); 
        } else {
            alert("You pressed Cancel!");              
        }
    }
</script>

<?php
    function confirmDelete(){
        $sql="DELETE FROM project_table WHERE project_id='".$_GET['project_id']."' AND member_id='".$_SESSION['user_id']."';";
        if(mysqli_query($GLOBALS['db'], $sql)) {
            echo "Your test deleted successfully";  
        } else {
            echo "ERROR: Could not able to execute $sql. " . mysqli_error($GLOBALS['db']);
        }
    }
?>

如果可能,您应该尝试从您的视图中删除您的 PHP。 如果您将 PHP 函数移动到一个单独的 PHP 文件中并使用 AJAX 调用它们,它将允许您在需要时在不同页面上重用代码。

这没有经过完全测试,但我会说是一个更清洁的解决方案。

添加一个 id 来删除图像:

<img id="delete" src="" title="delete"  alt="running test" style="width:15px;height:15px;border:0;margin-left:1cm" onclick="deleteProject()"/>

更改您的 javascript 以使用 AJAX 调用 PHP 脚本:

$( document ).on( 'click', '#delete', function(){
    var r= confirm("Press a button!");
    if (r==true)
      {
        $.ajax({
        url: '<?php echo LOCATION_OF_PHP_SCRIPT; ?>',
        type: 'post',
        data: DATA_IF_NEEDED
        }).success( resp )
        {
            if( resp == TRUE )
          {
            alert( "Deleted" );
          }

        }
      }
    else
      {
        alert("You pressed Cancel!");              

      }
})

您将需要调整一些参数以适合您的应用程序,但应该能让您继续前进。

你不能从JavaScript运行php代码。 JavaScript是客户端, php是服务器端。

您必须创建一个脚本deleteThings.php来删除您想要的内容并使用异步Ajax请求从客户端的JavaScript调用它。

对于异步Ajax请求,您可以使用jQuery 、vanilla JavaScript或其他库。

使用 ajax 从 JAVASCRIPT 函数调用 PHP 函数。

检查下面的代码。

$.ajax({

type: "POST",

url: 'your_functions.php',

dataType: 'json',

data: {functionname: 'delete'},

success: function (obj, textstatus) {
       }

})

your_functions.php

只需按照此代码即可实现使用 jQuery ajax 调用。 这是包含 jQuery 的 HTML 代码,我在同一目录中使用了 test.php 文件。 只需在 test.php 文件中编写您的 PHP 函数。 最后,在用户按下确认后,响应将显示在给定的 div 中。

<!DOCTYPE html>
<html>
<head>
    <title>Jquery ajax</title>
    <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
</head>
<body>
    <button onclick="myFun()">Click me</button>
    <div id="div1"></div>
    <script>
        function myFun(){
            var r= confirm("Press a button!");
        if (r==true)
          {
            $.ajax({url: "test.php", success: function(result){
            $("#div1").html(result);
            }});  
          }
        else
          {
            alert("You pressed Cancel!");              

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

单击 div 时,函数 read 将执行并给出 hi

<?php
function read($id){
   echo $id;
  }
?>


<div onclick="<?php read("hi"); ?>" class="item">

</div>

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM