jQuery location.reload在ajax成功之后发生

时间:2018-02-22 12:25:33

标签: javascript jquery ajax

当我尝试重新加载网页时,我遇到了使用ajax成功的主要问题。在ajax的成功中,我同时拥有location.reloadwindow.location.hash。在这个location.reload之后,我需要触发一个click事件来打开一个关闭的div。

但不幸的是,它首先触发了click事件,并且在ajax成功之后发生了位置重新加载。以下是我的代码。

$.ajax({
        url: updatedUrl,
        dataType: 'json',
        type: 'post',
        data: 'id=' +  id,
        complete: function() {},
        success: function(data) {
            $('.overlay').hide();
            alert(data.status+': '+data.message);
            location.reload();
            window.location.hash = 'link';
            $('toggle-arrow').trigger('click');
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
});

有没有办法在位置重新加载后触发点击?

3 个答案:

答案 0 :(得分:1)

你需要在重新加载之前添加哈希并检查link的加载函数的哈希,如果它匹配而不是触发click事件,

$(document).ready(function(){
    if(window.location.hash == '#link'){
          $('toggle-arrow').trigger('click');
    }
})


$.ajax({
        url: updatedUrl,
        dataType: 'json',
        type: 'post',
        data: 'id=' +  id,
        complete: function() {},
        success: function(data) {
            $('.overlay').hide();
            alert(data.status+': '+data.message);
            window.location.hash = 'link';
            location.reload();            

        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
});

答案 1 :(得分:1)

为什么使用location.reload()。如果你必须留在同一页上。相反,您只需在ajax成功的同一页面中打开div:

$.ajax({
        url: updatedUrl,
        dataType: 'json',
        type: 'post',
        data: 'id=' +  id,
        complete: function() {},
        success: function(data) {
            $('.overlay').hide();
            alert(data.status+': '+data.message);
            $('#YOUR_DIV_ID").show();
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
});

答案 2 :(得分:0)

尝试使用此

setTimeout(function(){
$.ajax({
        url: updatedUrl,
        dataType: 'json',
        type: 'post',
        data: 'id=' +  id,
        complete: function() {},
        success: function(data) {
            $('.overlay').hide();
            alert(data.status+': '+data.message);
            location.reload();
            window.location.hash = 'link';
            $('toggle-arrow').trigger('click');
        },
        error: function(xhr, ajaxOptions, thrownError) {
            alert(thrownError + "\r\n" + xhr.statusText + "\r\n" + xhr.responseText);
        }
});
},500);