为什么.ajax()不能使用onclick?

时间:2016-10-29 06:32:26

标签: javascript php jquery ajax mysqli

问题: .ajax()无法使用onclick

当我点击Delete时,会发生这种情况:

  1. 删除MySql数据库中的行。
  2. 使用id="39"隐藏元素。
  3. 重定向到index页。
  4. 这是我到目前为止所做的:

    index.php档案:

    <script type="text/javascript" src="//code.jquery.com/jquery-1.8.3.js"></script>
    <span class="delete_test" onclick="del_fn(39)" id="39">Delete</span>      
    
    <script>
    function del_fn(test_id){
        var x = confirm("Are you sure you want to delete?");
        if (x)
        {
            $.ajax({
            type:'POST',
            url:'test7.php',
            data:'delete_id='+test_id,
            success:function(data) {
                if(data) {  
                    document.getElementById(test_id).style.display = "none";
                    window.location = 'https://www.example.com';
                }
            }
            });
        }
        else
        {
            return false;
        }
    }
    </script>
    

    test7.php档案:

    session_start();
    include("connect.php");
    $id_delete = mysqli_real_escape_string($db_mysqli,$_POST['delete_id']);
    $db_mysqli->query("DELETE FROM table Where id = '$id_delete'");
    

1 个答案:

答案 0 :(得分:1)

我认为问题出在if(data)部分。

我会做什么:

  • test7.php文件中添加一些逻辑,以检查查询是否正确执行以及echo truefalse
  • 然后在success处理程序中检查if(data == 'true')并在那里继续你的逻辑。

这是一个简单的例子:

  • test7.php

    if(<check if query went okay here>)
    {
        echo json_encode(true);
    }
    else
    {
        echo json_encode(false);
    }
    
  • ajax部分:

    $.ajax({
        url:      path,
        type:     "POST",
        dataType: "json",
        data:     data,
        cache:    false,
    
        success: function(response)
        {
            if(response === false)
            {
                // something went wrong with the query...
            }
            else
            {
                // query seems okay...
            }
        }
    });
    

有一次我注意到重定向超前于上面的代码。但是,在您的情况下,如果您要重定向用户,为什么需要隐藏元素?无论如何,只有这样你才能确定,我会补充一下:

setTimeout(function () {
    window.location = 'https://www.example.com';
}, 1);

希望它有所帮助!