2017-03-29 1 views
0

Bitte markieren Sie dies nicht als Duplikat. Ich habe alle auf StackOverflow vorgeschlagenen Methoden ausprobiert und keiner von ihnen funktioniert. Sie alle geben mir die URL der verweisenden Seite, nicht die aktuelle Seite. Oder sie funktionieren überhaupt nicht. Sogar window.location.href gibt die verweisende Seiten-URL zurück, nicht die aktuelle Seiten-URL. Ich benutze jQuery Mobile 1.4.5.Wie erhalten Sie die aktuelle Seiten-URL in jQuery Mobile 1.4.5?

Zum Beispiel sagen, ich war auf page1.php und ich klickte auf einen Link zu page1.php? Getvar = 42. Seite 1 sieht wie folgt aus:

<!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> 

Wenn ich den Link in der oben genannten Seite klicken und ich sehe, was es sagt in der Konsole. Ich bekomme:

http://hostname/page1.php 
http://hostname/page1.php 
/page1.php 

Ich habe auch versucht, diese Anrufe Einwickeln zu() in einer jQuery $ (document) .ready() Funktion ohne Änderung im Ergebnis console.log.

<script> 
$(function() { 
    console.log(window.location.href); 
    console.log(document.location.href); 
    console.log($.mobile.activePage.data('url')); 
}); 
</script> 

Wie Sie sehen können, sind keine davon die vollständige URL. Das Gleiche gilt für die Verknüpfung mit einer anderen Datei. Dies betrifft nicht nur Seiten mit GET-Variablen in der URL. Ich erwarte zu sehen /page1.php?getvar=42

Ich habe Themen auf Stack Overflow gefunden, die die gleiche Frage stellen, aber keine der Antworten funktionieren für mich. Vielleicht verwenden sie eine andere Version von jQuery Mobile. Ich benutze jQuery 1.4.5, wie Sie sehen können.

Bis jetzt die einzige Lösung, die ich gefunden habe, ist ajax Laden von Seiten in jQuery mobile deaktivieren, indem Sie Data-ajax = "false" auf einem übergeordneten Container. Aber es muss einen besseren Weg geben.

(By the way, der Grund, warum ich diese brauche, ist so, dass ich die aktuelle Seite neu zu laden kann. Aber zur Zeit alle Versuche, die aktuelle Seite nimmt mich einfach zurück auf die verweisende Seite neu zu laden. Und das ist der Grund.)

+0

Dies wird Ihnen helfen http://stackoverflow.com/questions/901115/how-can-i-get-query-string-values-in-javascript. Was Sie suchen, heißt Query String. – ProgrammerV5

+0

Die Abfragezeichenfolge wird nicht in der URL angezeigt. Das ist das Problem. – phpguru

+0

Nun, dann können Sie nicht bekommen, was nicht da ist :) Sie sagten speziell "Zum Beispiel sagen, ich war auf page1.php und ich klickte auf einen Link zu page1.php? Getvar = 42" – ProgrammerV5

Antwort

-2

Die Antwort ist in einem setTimeout() aufrufen, so wickeln window.location.href:

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

Wrapping innerhalb von $ (document) .ready() Aufruf funktioniert nicht, wenn.

+1

http://api.jquerymobile.com/jQuery.mobile.path.parseUrl/ Sie müssen weder setTimeoit noch ready verwenden. Verwenden Sie Seitencontainer-Ereignisse. http://stackoverflow.com/a/26393037/1771795 – Omar

0

Versuchen Sie die folgende Funktion. Ich habe diesen Codecode in meinem Projekt verwendet und es ist gut gelaufen.

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