调用ajax函数没问题,但是,beforeSend图像继续运行。我做错了什么?
$tag_link_list = $('#tag_link_list');
current_page = '1';
click_term = '1';
var data = {
action: 'click_symptom',
postSearchNonce: MyAjaxSearch.postSearchNonce,
click_term: click_term,
p: current_page
};
$.ajax({
url: MyAjaxSearch.ajaxurl,
type: 'POST',
cache: false,
data: data,
beforeSend: function() {
$tag_link_list.html('<i id="tag_entry_spinner" class="fa fa-spinner fa-pulse fa-5x"></i>');
},
success: function(data) {
if (data) {
$tag_link_list.append(data);
current_page++
} else {
$('#messages_list').html('<center>No result to show.</center>');
}
}
}); //ajax
&#13;
答案 0 :(得分:1)
尝试:
success: function(data) {
if(data) {
$tag_link_list.html(data);
current_page++
} else {
$tag_link_list.empty();
$('#messages_list').html('<center>No result to show.</center>');
}
}
答案 1 :(得分:1)
使用.append()
,不会删除微调器。而data
将作为其兄弟之后插入:
<div id="tag_link_list">
<i id="tag_entry_spinner" class="fa fa-spinner fa-pulse fa-5x"></i>
<!-- data -->
</div>
要删除微调器,您可以在$tag_link_list
之前.empty()
append
或仅设置其.html()
:
$tag_link_list.empty().append(data);
$tag_link_list.html(data);
或者,如果你保留对微调器的引用,你可以直接.remove()
:
var $tag_link_list = $('#tag_link_list');
var $spinner = $('<i id="tag_entry_spinner" class="fa fa-spinner fa-pulse fa-5x"></i>');
// ...
// ...
beforeSend: function () {
$tag_link_list.html($spinner);
},
success: function(data) {
if (data) {
$spinner.remove();
$tag_link_list.append(data);
// ...
答案 2 :(得分:0)
您需要使用jquery的remove()
方法。它在您发送请求之前附加微调器,但您从未做过任何删除微调器的操作。
另一个选项,而不是append()
,您可以使用html()
,这意味着如果您发出另一个GET请求,html将会更新,而不会附加在第一个请求之上。
这一切都取决于你想要达到的目标。
以下代码就是您要找的。我今天也有类似的问题:
success: function(data) {
if (data) {
$tag_link_list.remove();
$tag_link_list.append(data);
current_page++
} else {
$tag_link_list.remove();
$('#messages_list').html('<center>No result to show.</center>');
}
}