我有一个小问题,我试图解决但没有成功,我希望你们能帮助我。
所以我有一个按钮,一旦点击就应该调用一个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>
谢谢!
答案 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>
尝试将ajax.dataType
从html
更改为text/plain