2017-03-29 153 views
0

請不要將此標記爲重複。我已經嘗試了所有在StackOverflow上建議的方法,並且都沒有工作。他們都給我提到頁面的URL,而不是當前頁面。或者他們根本不工作。即使window.location.href也會返回引用頁面的URL,而不是當前頁面的URL。我正在使用jQuery Mobile 1.4.5。如何在jQuery Mobile 1.4.5中獲取當前頁面的URL?

例如說我在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)。就緒()函數的結果沒有改變。

<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

我已經找到堆棧溢出的主題,要求這個相同的問題,但沒有答案爲我工作。也許他們正在使用不同版本的jQuery Mobile。正如你所看到的,我正在使用jQuery 1.4.5。

到目前爲止,我發現的唯一解決方案是通過在父容器上放置data-ajax =「false」來關閉jQuery移動頁面的Ajax加載。但是一定有更好的辦法。

(順便說一句,我必須這樣做的原因是爲了讓我可以重新加載當前頁,但目前所有試圖加載當前頁面只是帶我回其提交頁面。這就是爲什麼。)

+0

這將幫助您http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript。您正在查找的內容稱爲查詢字符串。 – ProgrammerV5

+0

查詢字符串未顯示在URL中。那就是問題所在。 – phpguru

+0

那麼你不能得到什麼不在那裏:)你特別說這個「例如說我在page1.php,我點擊了一個鏈接到page1.php?getvar = 42」 – ProgrammerV5

回答

-2

答案是包裝window.location.href在setTimeout()調用是這樣的:爲$(文件)。就緒()調用不起作用裏面

<script> 
setTimeout(function() { 
    console.log(window.location.href); 
}, 0); 
</script> 

包裝,雖然。

+1

http://api.jquerymobile.com/jQuery.mobile.path.parseUrl/你不需要使用setTimeoit也沒有準備好。使用pagecontainer事件。 http://stackoverflow.com/a/26393037/1771795 – Omar

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]; 
     } 
    } 
    };