JQuery:当用户点击链接时,首先提交表单然后转到链接

时间:2011-07-04 01:13:03

标签: php jquery

所以我的设置包含以下几个链接

<a class="someclass" href="http://www.google.com" id="link01">Google</a>
<a class="someclass" href="http://www.yahoo.com" id="link02">Yahoo</a>
<a class="someclass" href="http://www.cnn.com" id="link03">CNN</a>
<a class="someclass" href="http://www.facebook.com" id="link04">Facebook</a>

$(".someclass").click(function() {
            var currentId = $(this).attr('id');
            var data = "do=clearthis&id=" + currentId;

              $.ajax({
                 type: "POST",
                  url: "clearance.php",
                  data: data,
                  success: function(msg){
                   }
                 });
               });
});

我正在做的是查找被点击的链接,从链接获取一个id值,并将ajax提交给我的PHP文件,这将从我的数据库中删除链接。

因此,当用户点击链接时,该链接将从我的数据库中删除。但问题是它实际上并没有起作用。我认为问题是它太快了,因为jquery开始为我发布POST表单,它已经跳转到目标链接。有没有办法诱导某种延迟,允许我的clearance.php在允许用户继续目标链接之前处理删除?

谢谢!

2 个答案:

答案 0 :(得分:3)

制作同步AJAX请求,使其首先完成:

$.ajax({
  type: "POST",
  async: false,
  url: "clearance.php",
  data: data,
  success: function(msg){
  }
});

答案 1 :(得分:1)

另一种不同步请求的解决方案:

$(".someclass").click(function() {
    var currentId = $(this).attr('id');
    var data = "do=clearthis&id=" + currentId;
    var linkUrl =   $(this).attr("href");
        $.ajax({
             type: "POST",
                url: "clearance.php",
                data: data,
                success: function(msg){
                 },
                complete: function(){
                    window.location.href = linkUrl;
                }
             });
         });
    return false;
});