在XDK中使用ajax和php删除sql中的数据


delete data in sql using ajax and php in XDK

我想删除一行数据在我的SQL当删除按钮按在xdk。我搜索了一些代码,但仍然没有删除数据。

这是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有点陌生

                            <?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. 你应该使用console.log()而不是alert()进行测试(imo)
  2. 如果你打开你的控制台(F12在谷歌Chrome)你看到任何控制台错误时,你的代码运行?
  3. 你的代码很容易受到SQL注入,你可能会想看看PHP的PDO与你的数据库交互
  4. 你的PHP文件执行正确吗?

$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请求,您的请求从未到达服务器,或者服务器响应错误。