我的函数仅适用于 ajax 调用后的警报

My function only works with an alert after my ajax call

本文关键字:调用 ajax 函数 适用于 我的      更新时间:2023-09-26

我正在用数据库中的值填充一个表。我在可以删除的行中包含了一个删除图标。该图像具有onclick='deleteCat(id);'属性,id 通过循环从 json 数组中获取,如下所示:

string = "<td align='center'><a href=''><img border='0' src='../images/Bullet-Delete.png' alt='delete' onclick='deleteCat("+json[i]['id']+");'/></a></td>";

这是我deleteCat函数:

function deleteCat(id){
    var dataString = "catId=" + id;
    $.ajax({
        type: "POST",  
        url: "../ajax/categorie_verwijderen.php",
        data: dataString,  
        success: function(data) {
                //$("#allecat").find("tr:gt(0)").remove();
                //update_table();                
        }
   });   
   //alert(id);
}

当我在 ajax 之后发出警报时,我的函数会起作用。表刷新,该行从我的数据库中删除。但是,当我删除警报时,我的函数不起作用,表被刷新,该行仍然存在于表和数据库中。

提前谢谢。

您需要阻止单击的默认事件 - 即每次单击图像时都会重新加载页面

function deleteCat(id){
    var dataString = "catId=" + id;
    $.ajax({
        type: "POST",  
        url: "../ajax/categorie_verwijderen.php",
        data: dataString,  
        success: function(data) {
                $("#allecat").find("tr:gt(0)").remove();
                update_table();                
        }
   });   
   return false; // prevent the browser following the href
}

您还需要更改您的 html :

onclick='return deleteCat("+json[i]['id']+");

alert() 会有所帮助,因为这会延迟该函数中剩余 javascript 的处理。ajax 异步发送数据。async key 为 Default: true,应在调用中将其更改为 false,直到客户端等待 ajax 调用结束。例如:

$.ajax({
  async:false,
  url: "test.html",
  .
  .
});