将网址字符串中的单个参数添加到Javascript window.location redirect

时间:2019-01-06 04:43:59

标签: javascript php geolocation

工作原理: 我创建的目录页面会查询一个MySQL数据库,并返回默认结果类别,该结果类别按其与我们城市的纬度和经度坐标的接近程度排序(加载index.php?cat = 1&lat = 41.308273&long = -72.927879,例如开始)。当您单击类别链接(index.php?cat = 2)时,它将按照相同的排序标准(通过URL字符串)加载不同类别的结果。然后,我在下面有以下javascript(称为“使用我的位置”按钮元素的onclick),它将获取用户的地理位置并将其发送到查询,以便按与用户位置的接近程度对返回的结果进行排序(例如,如果他们位于城市的边缘,排序方式将与默认排序方式不同),除了...

什么不起作用: 当我进入第二页(index.php?cat = 2 ...,显示该类别结果的默认基于城市的排序)时,我单击“使用我的位置”按钮,它可以正确获取并发送用户的经/纬度,但会重定向到第一类页面(index.php?cat = 1 ...)。如果单击第二个,则显示正确排序的结果。

在调用函数时,是否可以将$ _GET ['cat']的值附加到window.location字符串的末尾?这样该行将显示为:

window.location ='index.php?lat ='+ position.coords.latitude +'&long ='+ position.coords.longitude +'&cat ='+ ValueFromCatVariable;

我意识到作为一个新手,我的工作超出了我的能力范围,但是花了数小时尝试了这一点,我想我会在这里尝试一下,因为我不清楚是否有可能,也许有人会快速给出答案,以正确的方式发送给我(我读过AJAX和JSON可能有一些解决方案,但到目前为止,我只习惯于基于页面的简单变量传递)。预先感谢您的任何建议。

试图集成一些URL查询解析代码,但无法看到如何使其成为重定向的一部分。想知道我是否应该使用表单输入方法?

var y = document.getElementById("getgeo");

function getLocation() {
    if (navigator.geolocation) {
        navigator.geolocation.watchPosition(redirectToPosition); //getCurrentPosition
    } else { 
        y.innerHTML = "Geolocation is not supported by this browser.";
    }
}

function redirectToPosition(position) {
    window.location='index.php?lat='+position.coords.latitude+'&long='+position.coords.longitude;
}

希望可以将cat = 2页面与基于地理位置的纬度/经度重新排序,而无需将页面重定向回默认类别(cat = 1)。

1 个答案:

答案 0 :(得分:0)

我认为除了在js window.location中正常运行$ _GET ['cat']外,其他事情都可以。

<script>
    var cat = "<?php echo $_GET['cat'] ?>"
    console.log("cat = " + cat)
</script>

使用此方法,您可以在js变量中获取cat并使用它。