Erişim JavaScript doğrudan GET?

5 Cevap php

Ben JavaScript'den $_GET değişkenleri erişmek için PHP kullanmak varsayalım:

<script>
var to = $_GET['to'];
var from = $_GET['from'];
</script>
<script src="realScript" type="text/javascript"></script>

Ama belki daha da basittir. JS doğrudan bunu yapmak için bir yolu var mı?

5 Cevap

Bakmak

window.location.search

?foo=1&bar=2: Bu gibi bir dize içerecektir

Bir nesne içine almak için, bazı bölme yapmanız gereken tek şey:

var parts = window.location.search.substr(1).split("&");
var $_GET = {};
for (var i = 0; i < parts.length; i++) {
    var temp = parts[i].split("=");
    $_GET[decodeURIComponent(temp[0])] = decodeURIComponent(temp[1]);
}

alert($_GET['foo']); // 1
alert($_GET.bar);    // 2

İşte başka bir fikir:

<script type="text/javascript">

var $_GET = <?php echo json_encode($_GET); ?>;

alert($_GET['some_key']);
// or
alert($_GET.some_key);

</script>

Diğerleri açıkladığımız gibi değişkenleri almak için JS sayfası URL ayrıştırmak.

Ayrıca değerleri gönderir sayfasında AJAX kullanabilirsiniz. Gerçekten geçen ve daha sonra kullanıcıya geri dönen konum bilgileri ne tür bağlıdır. (Bu, kesinlikle sadece alternatif bir yaklaşım bunu yapmanın daha basit ya da daha doğrudan bir yol değil)

Bunu düşünüyordun varsayalım:

<script type="text/javascript">

    var to = "<?= $_GET['to']; ?>";
    var from = "<?= $_GET['from']; ?>";

</script>

... Bu sadece senin fikrin sözdizimi düzeltme olurdu :)

i (php $ _GET gibi) Get istek için bu birini kullanın:

  var urlParams;
  (window.onpopstate = function () {
    var match,
          pl     = /\+/g,  Regex for replacing addition symbol with a space
           search = /([^&=]+)=?([^&]*)/g,
          decode = function (s) { return decodeURIComponent(s.replace(pl, " ")); },
           query  = window.location.search.substring(1);
       urlParams = {};
       while (match = search.exec(query))
        urlParams[decode(match[1])] = decode(match[2]);
    })();