将PHP echo放入按钮的innerHTML中并不起作用

时间:2014-10-08 03:47:11

标签: javascript jquery html ajax

我有一个像这样的jQuery代码:

$("#erase").click(function(){
        $("#erase").attr("disabled", "disabled"); // Prevent double-clicking
        $(this).html("Erasing...");
        $.post("erase.php", {target: $("#target").val(), criteria: $("#criteria").val()}, function(data){
            $(this).html(data); // Change the button's caption to whatever erase.php echoes.
            setTimeout(function(){
                window.location.href = "index.php";
            }, 3000);
        });

targetcriteria都是HTML input标记,按钮是使用button标记声明的。 我希望当用户点击按钮时会发生这些情况:

  1. 按钮将显示为灰色,其文字将显示“正在删除......”
  2. erase.php将通过AJAX调用。 erase.php将从数据库中删除一行,并需要几秒钟才能完成。
  3. 当AJAX调用完成时,按钮文本将是erase.php的输出。它将是“成功”或“失败”
  4. 3秒后,用户将被带回主页。
  5. 但就我而言,第3步失败了。该按钮卡在“删除....”(但请求 完成了。)


    旁注:我真的不能想到这个问题的更好的标题。如果你能为我拿出一个。请在评论中告诉我。我很感激。

1 个答案:

答案 0 :(得分:5)

$(this)里面的$ .post不是你之前的那个。试试这种方式

$("#erase").click(function(){
    $("#erase").attr("disabled", "disabled"); // Prevent double-clicking
    $(this).html("Erasing...");
    $this = $(this);
    $.post("erase.php", {target: $("#target").val(),
           criteria: $("#criteria").val()}, function(data){
            $this.html(data); 
            setTimeout(function(){
                window.location.href = "index.php";
            }, 3000);
        });