代码之家  ›  专栏  ›  技术社区  ›  Vidya

用onclick事件调用php函数?

  •  1
  • Vidya  · 技术社区  · 8 年前

    我要从数据库中删除项目。在删除之前,我要确认用户是否要删除它。如果用户单击“确定”,它必须调用“删除”函数。但是在代码中,当用户单击该函数时,不仅会调用“用户单击“确定”,还会单击“concel”。对于其他alter statem它工作正常,只调用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']);
            }
        }
    ?>
    
    4 回复  |  直到 8 年前
        1
  •  0
  •   bairavand    8 年前

    只需按照以下代码使用jquery ajax调用来实现。 这是包含jquery的html代码,我使用了同一目录中的test.php文件。只需在test.php文件中编写php函数。最后,用户按下confirm后,响应将显示在给定的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>
    
        2
  •  1
  •   Blinkydamo    8 年前

    如果可能的话,您应该尝试从视图中删除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!");              
    
          }
    })
    

    您将需要调整一些参数以适应您的应用程序,但应该让您去。

        3
  •  0
  •   DatGeoudon    8 年前

    你不能跑 php 代码来自 JavaScript . JavaScript 是客户端和 PHP 是服务器端的。

    你必须创建一个脚本 deleteThings.php 把你想要的从客户那里删除 JavaScript 使用异步 Ajax 请求。

    对于异步 阿贾克斯 请求您可以使用 jQuery 香草 JavaScript ,或其他库。

        4
  •  0
  •   Nithya    8 年前

    使用ajax从javascript函数调用php函数。

    检查下面的代码。

    $Ajax({

    type: "POST",
    
    url: 'your_functions.php',
    
    dataType: 'json',
    
    data: {functionname: 'delete'},
    
    success: function (obj, textstatus) {
           }
    

    })

    你的函数.php