我返回一个 IP,然后将其与某个范围进行比较。
我只是查看美国 IP,如果它落在某个范围内,我将显示一条消息。我正确获取了 IP,但当我尝试将其与范围匹配时,出现意外范围的语法错误。我该如何解决这个问题?
这是我的代码的样子
$.getJSON("http://jsonip.com", function (data) {
var x = data.ip;
$('body').html(x);
var usRange = [3.0.0.0, 222.229.21.255];
if (x >= usRange[0] && x <= usRange[1]) {
alert('US');
} else alert('outside US');
});
这是我的 fiddle
最佳答案
错误的含义是,您无法分配带有 4 个小数点的数字。
var usRange = [3.0.0.0, 222.229.21.255]; //Not possible
仅供引用:从json
返回的IP地址是字符串
,不是数字.
所以你的方法行不通。在这里检查我的方法,
1)根据$.getJSON
返回的.
分割ip地址
var x = data.ip.split('.'); // returns ["122", "164", "17", "211"]
2) 不使用 usRange
数组,只需通过简单的比较操作来实现。
3)您无法将字符串与数字进行比较,因此请将这些字符串转换为数字,例如
+x[0] //convert "122" to 122
最后,
$.getJSON("http://jsonip.com", function (data) {
var x = data.ip.split('.');
if (+x[0] >= 3 && +x[0] <= 222) {
if (+x[1] >= 0 && +x[1] <= 229) {
if (+x[2] >= 0 && +x[2] <= 21) {
if (+x[3] >= 0 && +x[3] <= 255) {
alert("Within range");
}
}
}
} else {
alert("Is not within range");
}
});
JSFiddle
关于javascript - 将 IP 与存储在数组中的范围进行匹配,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20303690/