Javascript 在Ajax调用中,第一次单击失败,第二次单击成功•;JQuery/PHP

Javascript 在Ajax调用中,第一次单击失败,第二次单击成功•;JQuery/PHP,javascript,php,jquery,Javascript,Php,Jquery,我有一个Ajax调用,它向PHP发送消息,完成后重新加载div 按钮(Ajax触发器) 删除组 Jquery <script type="text/javascript"> $(document).on('click', '.group-action', function(){ var action = $(this).attr('data-action'); var randnum = Math.floor(Math.random()

我有一个Ajax调用,它向PHP发送消息,完成后重新加载
div

按钮(Ajax触发器)


删除组
Jquery

<script type="text/javascript">

    $(document).on('click', '.group-action', function(){

        var action = $(this).attr('data-action');
        var randnum = Math.floor(Math.random()*1001);


        $.ajax({
            type: "POST",
            url: "server/php/delete_action.php",
            cache: false,
            data: action + "&random=" + randnum,
            success: function(){
                $('#show_groups').load('server/php/show_groups.php');
            }

        }); 

    });

</script>

$(文档)。在('单击','上。组操作',函数(){
var action=$(this.attr('data-action');
var randnum=Math.floor(Math.random()*1001);
$.ajax({
类型:“POST”,
url:“server/php/delete_action.php”,
cache:false,
数据:action+“&random=“+randnum,
成功:函数(){
$('show_groups').load('server/php/show_groups.php');
}
}); 
});
PHP页面(delete_action.PHP)



当我单击一次触发器按钮时,PHP的操作会执行它应该执行的操作,但是成功时加载函数不会触发,但是如果我再次单击该按钮,它将正常工作,成功函数将运行。

您是否尝试在ajax函数上使用async:false,

  $.ajax({
            type: "POST",
            url: "server/php/delete_action.php",
            cache: false,
            data: action + "&random=" + randnum,
            success: function(){
                $('#show_groups').load('server/php/show_groups.php');
            },
            async: "false",

        }); 
谢谢,
Naumche

您在服务器端做什么日志记录?您如何跟踪PHP代码以查看值是什么,以及它们是否是您期望的值?我没有看到您定义了
action
<代码>数据:“action=“+action+”&random=“+randnum,您从哪里获得
handle
变量?就日志记录而言,我为所有客户端操作运行了一个console.log()。对于服务器端,php正在删除我的服务器上的文件夹和文件,我在第一次单击时就看到了这种情况。@thescientist编辑的问题-添加了按钮触发器您是否确定您的
delete\u操作。php
脚本工作正常并返回状态
HTTP 200
?否则将不会调用
success
处理程序。您可以尝试添加将输出一些调试消息的
complete
处理程序。这个处理程序在任何情况下都会被调用。我添加了这个,它工作了,然后我删除了它,它仍然工作了…不知道为什么。无论如何,我会给你一个漂亮的绿色复选标记:)
<?php

    $dir_base = 'files/';

    $handle = $dir_base . $_POST['handle'];
    $action = $_POST['action'];

    function delete_all_images($dirname) {
        foreach(glob($dirname.'/*.*') as $v){
        unlink($v);
        }
    }

    function delete_group($dirname) {
       if (is_dir($dirname))
          $dir_handle = opendir($dirname);
       if (!$dir_handle)
          return false;
       while($file = readdir($dir_handle)) {
          if ($file != "." && $file != "..") {
             if (!is_dir($dirname."/".$file))
                unlink($dirname."/".$file);
             else
                delete_group($dirname.'/'.$file);    
          }
       }
       closedir($dir_handle);
       rmdir($dirname);
       return true;
    }

    if( (isset($action)) && (!empty($action)) && (isset($handle)) && (!empty($handle)) ){
        $doit = $action($handle);
        eval($doit);
    }

?>
  $.ajax({
            type: "POST",
            url: "server/php/delete_action.php",
            cache: false,
            data: action + "&random=" + randnum,
            success: function(){
                $('#show_groups').load('server/php/show_groups.php');
            },
            async: "false",

        });