为什么ajax beforeSend在函数成功后继续运行?

时间:2015-05-07 19:44:00

标签: javascript jquery ajax

调用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;
&#13;
&#13;

3 个答案:

答案 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>');
        }
    }