请不要将此标记为重复。我已经尝试了StackOverflow上建议的所有方法,但没有一个工作。它们都给我引用页面的URL,而不是当前页面。或者他们根本不工作。甚至window.location.href也会返回引用页面URL,而不是当前页面URL。我使用的是jQuery Mobile 1.4.5。
例如,我说我在page1.php上,然后点击了指向page1.php?getvar = 42的链接。第1页看起来像这样:
<!doctype html>
<html>
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.12.0/jquery.min.js"></script>
<link rel="stylesheet" href="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.css">
<script src="//ajax.googleapis.com/ajax/libs/jquerymobile/1.4.5/jquery.mobile.min.js"></script>
</head>
<body><div data-role="page" data-dom-cache="false">
<a href="page1.php?getvar=42">Click Here</a>
<?php if ($_GET['getvar']=='42'): ?>
<script>
console.log(window.location.href);
console.log(document.location.href);
console.log($.mobile.activePage.data('url'));
</script>
<?php endif ?>
</div></body></html>
当我点击上一页中的链接时,我会在控制台中查看它的内容。我明白了:
http://hostname/page1.php
http://hostname/page1.php
/page1.php
我还尝试在jQuery $(document).ready()函数中将这些调用包装到console.log()中,但结果没有变化。
<script>
$(function() {
console.log(window.location.href);
console.log(document.location.href);
console.log($.mobile.activePage.data('url'));
});
</script>
正如您所看到的,这些都不是完整的网址。链接到不同的文件时也是如此。因此,它不会影响URL上具有GET变量的页面。我期待看到/page1.php?getvar=42
我发现Stack Overflow上的主题提出了同样的问题,但没有一个答案对我有用。也许他们正在使用不同版本的jQuery Mobile。我可以看到你正在使用jQuery 1.4.5。
到目前为止,我找到的唯一解决方案是通过输入data-ajax =&#34; false&#34;来关闭jQuery mobile中页面的jj加载。在父容器上。但必须有更好的方法。
(顺便说一下,我需要这个的原因是我可以重新加载当前页面。但是目前所有重新加载当前页面的尝试都会让我回到引用页面。这就是原因。)
答案 0 :(得分:0)
尝试以下功能。我在我的项目中使用了这种代码的平衡,并且表现良好。
var getUrlParameter = function getUrlParameter(sParam) {
var sPageURL = decodeURIComponent(window.location.search.substring(1)),
sURLVariables = sPageURL.split('&'),
sParameterName,
i;
for (i = 0; i < sURLVariables.length; i++) {
sParameterName = sURLVariables[i].split('=');
if (sParameterName[0] === sParam) {
return sParameterName[1] === undefined ? true : sParameterName[1];
}
}
};
答案 1 :(得分:-2)
答案是在setTimeout()调用中包装window.location.href,如下所示:
int
但是,在$(document).ready()调用内部包含不起作用。