如何使用JS / JQuery根据位置重定向其他页面上的用户?

时间:2018-11-22 00:25:15

标签: javascript jquery html

我正在尝试编写一个简单的脚本来根据用户的位置在不同页面上重定向用户。

基本上,https://ipapi.co/country/页面返回的值基于英国的位置,例如“ GB”。因此,当脚本返回“ GB”时,应将用户重定向到UK.html。

您会注意到,在第二种情况下,我正在尝试使用多个国家/地区。如果用户来自IT或FR或DE,那么我希望他重定向到EU.html。

因为我是一个完整的初学者,所以我认为以下代码中缺少某些内容,希望您能帮助我了解缺少的内容以及编写正确的代码。

<script type="text/javascript">

$.get('https://ipapi.co/country/', function(country){
console.log(country)
})

if (country = "GB") {
  window.location.replace("UK.html");
}
else if (country = ["FR","IT","DE","CH"]) {
  window.location.replace("EU.html");
}
else {
  window.location.replace("US.html");
}

</script>

谢谢!

2 个答案:

答案 0 :(得分:1)

将window.location.replace(“ US.html”)更改为window.location =“ US.html”

<script type="text/javascript">
$.get('https://ipapi.co/country/', function(country){
console.log(country)
})
if (country === "GB") {
 window.location="UK.html";
}
else if (["FR","IT","DE","CH"].indexOf(country )!==-1) {
  window.location="EU.html";
}
else {
  window.location="US.html";
}
</script>

答案 1 :(得分:0)

我将提供一个不需要jQuery的简单解决方案。

一个功能将向https://ipapi.co/country/发出请求。

第二个函数将根据第一个函数的响应执行重定向。

<script type="text/javascript">
const whatCountry = function(){
    const xhr = new XMLHttpRequest()
    xhr.open("GET", "https://ipapi.co/country/")
    xhr.onload = function(){
        checkCountryAndRedirect(xhr.response)
    }
    xhr.send()
}

const checkCountryAndRedirect = function(country){
    if(country === "GB"){
        window.location.replace("UK.html");
    } else if(country === "FR" || country === "IT" || country === "DE" || country === "CH"){
        window.location.replace("EU.html")
    } else {
        window.location.replace("US.html")
    }
}
</script>

定义了这两个函数后,您可以使用whatCountry()

调用请求

为澄清起见,由于AJAX请求是异步的,因此检查country的代码部分必须是回调的一部分。

您正在执行的if检查将始终为true,因为单个=表示您正在将右侧的值分配给country

第二条if语句将检查country是否为数组["FR","IT","DE","CH"]。要检查country是否是这四个国家之一,您可以测试country是否等于这四个国家(不是很干净的解决方案)。您也可以使用switch语句,但是我喜欢上面建议的indexOf解决方案。

编辑:我使用过window.location.replace,但是window.location = ...更适合您的情况。