我正在使用jqueries地址更改事件,并且当用户在浏览器中复制并粘贴URL时遇到障碍。我需要拳头加载包含表单的页面的一部分。我可以在每次分页后都这样做,但看起来真的很无效。
这是我目前的代码块:
$.address.change(function(e) {
var urlAux = e.value.split('=');
var page = urlAux[0];
var start = urlAux[1];
if (page == "/visits") {
$.address.title("Profile Views");
if (start) {
$('#start').val(start);
// ***** If a user has copied and pasted this URL with a start value then I first need to load visits.php in the main div tag. Is it possible to see if this is loaded or not?
$.post("visits_results.php", $("#profile_form_id").serialize(),
function(data) {
$('#search_results').html(data);
location.href = "#visits=" + start;
});
}
else {
var args = localStorage.getItem("visits");
$('#main').load("visits.php?" + args, function () { });
}
}
我试图解决这个问题:
var args = localStorage.getItem("visits");
$('#main').load("visits.php?" + args, function () {
$('#start').val(start);
$.post("visits_results.php", $("#profile_form_id").serialize(),
function(data) {
$('#search_results').html(data);
location.href = "#visits=" + start;
});
});
必须有一个更好的方法......这是在每个分页事件中对页面的相同部分(visits.php)进行实现。是否有更好的方法来加载URL而不是让它们触发地址更改?
答案 0 :(得分:1)
从他的评论中使用paul的工作,但是这个解决方案将寻找附加到#mainID的data(),而不是在visit.php表单中使用正则表达式的html内容。
保罗关于笔记的工作:
经过多次黑客攻击后,我想出了这个似乎有用的解决方案 诀窍。我不确定它有多好,但似乎可以做到这一点。一世 现在得到主div id并在一个唯一的字符串上进行正则表达式匹配 形成。如果我没有看到它,我加载表单,然后加载结果。不 确定这是否是好的做法,但它似乎解决了我的问题。
使用.data()代替visit.php的html的正则表达式搜索的方法:
/*check if we're missing visits.php by looking for data() flag*/
if( !($("#main").data()["hasVisitsPhp"]) ){
var args = localStorage.getItem("visits");
$('#main').load("visits.php?" + args, function () {
$('#start').val(start);
$.post("visits_results.php", $("#profile_form_id").serialize(),
function(data) {
/* we've loaded visits.php, set the data flag on #main*/
$('#main').data("hasVisitsPhp","loaded");
$('#search_results').html(data);
location.href = "#visits=" + start;
});
});
}
答案 1 :(得分:0)
尝试window.location.hash
。更改整个href可以/将触发整页重新加载,而仅更改哈希本身应该最多导致页面滚动。