使用jquery和ajax将按钮替换为另一个按钮

时间:2016-09-01 01:42:42

标签: jquery ajax

我有一个小问题,我试图解决但没有成功,我希望你们能帮助我。

所以我有一个按钮,一旦点击就应该调用一个Ajax函数,并用成功后从Ajax获得的响应替换自己。

我的代码到目前为止为html:

<div class="btn-group">
<button id="button1" class="btn btn-white btn-xs" onclick="like(83,1)">
<i class="fa fa-heart-o"></i>
 J'aime !
</button>
</div>

和jquery部分:

function like(id, t) {

    $.ajax({
        type: "GET",
        url: "ajax/likes.php?postID=" + id + "&likeID=" + t,
        dataType: 'html',
        success: function(data) {
            $("#button" + t).replaceWith(data);
        }

    });
}

点击&amp;调用Ajax函数是有效的,我可以从开发人员控制台看到带有所需HTML的响应,但原始的不会被它取代。

响应如下:

<button id='button1' class='btn btn-white btn-xs 1' onclick='like(83,1)'>
<i class='fa fa-heart'></i>
 J'aime plus         
</button>

谢谢!

2 个答案:

答案 0 :(得分:0)

我建议您尝试使用jQuery的click()。

,而不是使用onclick属性

也许您可以尝试以下结构,

var ids; //set equal to number of id's in total

for (let i = 0; i < ids; i++) {
    $("button" + i).click({id: 83}, function() {
        callback(i, event.data.id);
    }
}
...
function callback(i,t){
  return function(){
    $.ajax({
            type: "GET",
            url: "ajax/likes.php?postID=" + t + "&likeID=" + i,
            dataType: 'html',
            success: function(data) {
            $("#button" + i).replaceWith(data);
            }
        });
    }
}

编辑:有一种方法可以通过click()传递params。有关详细说明,请参阅jQuery's .click - pass parameters to user function

答案 1 :(得分:0)

相同的代码

请检查t内的变量ajax.success的值。

var buttonsPlus = ["<button id='button1' class='btn btn-white btn-xs' onclick='like(83,1)'>\n\r<i class='fa fa-heart'></i> \nJ'aime plus\n</button>","<button id='button2' class='btn btn-white btn-xs' onclick='like(83,2)'><i class='fa fa-heart'></i> David plus</button>"];

function like(likes, index){
  // simulate ajax call
  setTimeout(function(){
    $('#button'+index).replaceWith(buttonsPlus[index-1]);
  }, 1000);
}
<script src="https://ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
<div class="btn-group">
<button id="button1" class="btn btn-white btn-xs" onclick="like(83,1)">
<i class="fa fa-heart-o"></i>
 J'aime !
</button>
<button id="button2" class="btn btn-white btn-xs" onclick="like(83,2)">
<i class="fa fa-heart-o"></i>
 David !
</button>
</div>

编辑#2:

尝试将ajax.dataTypehtml更改为text/plain