【发布时间】:2017-08-23 08:04:24
【问题描述】:
请不要将此标记为重复。我已经尝试了 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
我还尝试将这些对 console.log() 的调用包装在 jQuery $(document).ready() 函数中,结果没有变化。
<script>
$(function() {
console.log(window.location.href);
console.log(document.location.href);
console.log($.mobile.activePage.data('url'));
});
</script>
如您所见,这些都不是完整的 URL。链接到不同的文件时也是如此。因此,它不仅会影响 URL 上带有 GET 变量的页面。我期待看到 /page1.php?getvar=42
我在 Stack Overflow 上找到了提出同样问题的主题,但没有一个答案对我有用。也许他们正在使用不同版本的 jQuery Mobile。如您所见,我使用的是 jQuery 1.4.5。
到目前为止,我发现的唯一解决方案是通过将 data-ajax="false" 放在父容器上来关闭 jQuery mobile 中页面的 ajax 加载。但一定有更好的办法。
(顺便说一句,我需要这个的原因是为了重新加载当前页面。但目前所有重新加载当前页面的尝试都只会让我回到引用页面。这就是原因。)
【问题讨论】:
-
这将对您有所帮助 stackoverflow.com/questions/901115/… 。您要查找的内容称为查询字符串。
-
查询字符串未显示在 URL 中。这就是问题所在。
-
好吧,那你就无法得到不存在的东西 :) 你特别说这个“例如说我在 page1.php 上,我点击了一个指向 page1.php 的链接?getvar=42”
-
我的观点完全正确。为了清楚起见,我说的是单击指向 page1.php?getvar=42 的链接,然后检查当前位置并获取 page1.php,即使我在 page1.php?getvar=42 上。这是 jQuery Mobile 使用 ajax 将链接页面加载到 DOM 的工件。
标签: javascript jquery jquery-mobile mobile