当我尝试重新加载网页时,我遇到了使用ajax成功的主要问题。在ajax的成功中,我同时拥有location.reload
和window.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);
}
});
有没有办法在位置重新加载后触发点击?
答案 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);