使用Ajax和PHP在XDK中删除SQL中的数据

3

当在XDK中点击删除按钮时,我希望能够删除我的SQL中的一行数据。我已经搜索了一些代码,但仍然无法删除数据。

这是PHP文件(delete.php):

<?php
include('dbcon.php');

$foodid = $_POST['foodid'];

$query = "DELETE FROM menu WHERE id ='$foodid'";
$result=mysql_query($query);

if(isset($result)) {
echo "YES";
} else {
echo "NO";
}
?>

现在是我的ajax代码。

$("#btn_delete").click( function(){
alert("1");

    var del_id = $(this).attr('foodid');
    var $ele = $(this).parent().parent();

alert("2");

    $.ajax({
        type: 'POST',
        url: 'http://localhost/PHP/delete.php',
        data: { 'del_id':del_id },
        dataType: 'json',
        succes: function(data){
alert("3");
            if(data=="YES"){
                $ele.fadeOut().remove();
            } else {
                alert("Cant delete row");
            }
        }
    });
});

正如您所看到的,当我在XDK中运行程序时,我放置了警报以了解我的代码是否正在处理。它只弹出到alert("2");,而不是继续到3。因此,我认为我的ajax部分有误。我对ajax还比较陌生。

2个回答

2
                            <?php
                                $sqli= "*select * from temp_salesorder *";
                                $executequery= mysqli_query($db,$sqli);
                                while($row = mysqli_fetch_array($executequery,MYSQLI_ASSOC))
                                {       
                            ?>                  

 //"class= delbutton" is use to delete data through ajax

<a href="#" **id =<?php echo $row['transaction_id']; ?>** class="**delbutton**" title="Click To Delete"><button> Cancel</button></a>





     <!-- language: lang-js -->

     //Ajax Code
        <script type="text/javascript">
        $(function() {


        $(".delbutton").click(function(){

        //Save the link in a variable called element
        var element = $(this);

        //Find the id of the link that was clicked
        var del_id = element.attr("id");

        //Built a url to send
        var info = 'id=' + del_id;

         $.ajax({
           type: "GET",
           url: "deletesales.php",
           data: info,
           success: function(){

           }
         });
                 $(this).parents(".record").animate({ backgroundColor: "#fbc7c7" }, "fast")
                .animate({ opacity: "hide" }, "slow");



        return false;

        });

        });
        </script>

//deletesales.php

<?php
$db_host        = 'localhost';
$db_user        = 'root';
$db_pass        = '';
$db_database    = 'pos'; 
$db = mysqli_connect($db_host,$db_user,$db_pass,$db_database);
    $id=$_GET['id'];  <!-- This id is get from delete button -->


    $result = "DELETE FROM temp_salesorder WHERE transaction_id= '$id'";
     mysqli_query($db,$result);

?>



    <!-- end snippet -->

1

几件事情:

  1. 你应该使用console.log()进行测试,而不是alert()(个人意见)。
  2. 如果你打开控制台(在Google Chrome中按F12),当你的代码运行时,你是否看到任何控制台错误?
  3. 你的代码容易受到SQL注入攻击,你可能需要研究PHP的PDO来与你的数据库交互。
  4. 如果你将:

$foodid = $_POST['foodid'];

改为

$foodid = 1

如果第4点起作用,则问题出现在你的javascript中。使用第1点和第2点的建议进一步诊断问题。

更新:

为了扩展。你的第三个 alert() 无法触发的原因可能有几个。最可能的原因是 AJAX 调用不成功(只有在 AJAX 调用成功时才会调用成功处理程序)。为了在出现错误或失败时看到响应,您可以执行以下操作:
$.ajax({
  url: "http://localhost/PHP/delete.php",
  method: "POST",
  data: { del_id : del_id  },
  dataType: "json"
})
.done(function( msg ) {
  console.log(msg);
})
.fail(function( jqXHR, textStatus ) {
  alert( "Request failed: " + textStatus );
});

更多关于AJAX和jQuery的$.ajax的信息可以在这里找到。

我猜测可能是由于格式不正确的AJAX请求,导致你的请求从未到达服务器,或者服务器返回了错误。


谢谢,我在与我的笔记本电脑进行长时间的迷人一对一面试后找到了我的错误。哈哈哈,谢谢。 - Kelvin Punongbayan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接