我的函数仅在我的ajax调用后使用警报

时间:2012-05-15 09:02:15

标签: javascript ajax

我正在使用数据库中的值填充表。我在行中包含了一个可以删除的删除图标。该图像具有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之后发出警报时,我的功能正常工作。表刷新,行从我的数据库中删除。但是,当我删除警报时,我的函数不起作用,表格将刷新,表格和数据库中仍然存在该行。

提前致谢。

2 个答案:

答案 0 :(得分:3)

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

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']+");

答案 1 :(得分:1)

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

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

});