Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将IP与存储在阵列中的范围匹配_Javascript_Jquery - Fatal编程技术网

Javascript 将IP与存储在阵列中的范围匹配

Javascript 将IP与存储在阵列中的范围匹配,javascript,jquery,Javascript,Jquery,我返回一个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];

我返回一个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');
});
$.getJSON(“http://jsonip.com,函数(数据){
var x=data.ip;
$('body').html(x);
var usRange=[3.0.0.0222.229.21.255];
如果(x>=usRange[0]&&x错误的含义,则不能用4个小数点分配数字

FYI:
json
返回的IP地址是
字符串,而不是数字

所以你的方法行不通,来看看我的方法

1) 根据
$返回的
拆分ip地址。getJSON

var x = data.ip.split('.');  // returns ["122", "164", "17", "211"]
2) 不要使用
usRange
array,只需通过简单的比较操作即可

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");
    }
});
$.getJSON(“http://jsonip.com,函数(数据){
var x=data.ip.split('.');
如果(+x[0]>=3&&+x[0]=0&&+x[1]=0&&+x[2]=0&&+x[3]错误的含义,则不能分配带有4个小数点的数字

FYI:
json
返回的IP地址是
字符串,而不是数字

所以你的方法行不通,来看看我的方法

1) 根据
$返回的
拆分ip地址。getJSON

var x = data.ip.split('.');  // returns ["122", "164", "17", "211"]
2) 不要使用
usRange
array,只需通过简单的比较操作即可

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");
    }
});
$.getJSON(“http://jsonip.com,函数(数据){
var x=data.ip.split('.');

如果(+x[0]>=3&&+x[0]=0&&+x[1]=0&&+x[2]=0&&+x[3]为了更好的方法,我决定在这里重写我的答案。第一种方法实际上是使用位移位将IP地址转换为整数,然后比较整数值。我保留了第二个答案作为选项,但我更喜欢第一个

这两个函数都不会验证您的IP地址!

方法1:位移位
/**
*检查IP地址是否在其他2个IP地址的范围内
*@param{String}ip要验证
*@param{String}lowerBound范围的下限
*@param{String}upperBound范围的上限
*@return{Boolean}真或假
*/
函数在范围内(ip、下限、上限){
//将所有IP放入一个数组中进行迭代,并将所有IP拆分为各自的IP
//段数组
var ips=[ip.split('.')、lowerBound.split('.')、upperBound.split('.')];
//将所有IP转换为INT
对于(变量i=0;i上限[i])返回false;
}
}
返回true;
}

为了更好的方法,我决定在这里重写我的答案。第一种方法实际上是使用位移位将IP地址转换为整数,然后比较整数值。我保留了第二种答案作为选项,但我更喜欢第一种

这两个函数都不会验证您的IP地址!

方法1:位移位
/**
*检查IP地址是否在其他2个IP地址的范围内
*@param{String}ip要验证
*@param{String}lowerBound范围的下限
*@param{String}upperBound范围的上限
*@return{Boolean}真或假
*/
函数在范围内(ip、下限、上限){
//将所有IP放入一个数组中进行迭代,并将所有IP拆分为各自的IP
//段数组
var ips=[ip.split('.')、lowerBound.split('.')、upperBound.split('.')];
//将所有IP转换为INT
对于(变量i=0;i上限[i])返回false;
}
}
返回true;
}

为什么你认为内置的javascript操作符可以处理IP地址?我想说的是,
3.0.0.0
在javascript中不是一个有效的数字,所以将其与任何东西进行比较都会失败。你看,解析IP地址是复杂的,这不是我一分钟内就会想到的,也不是什么可以使用javascript操作符,因为数字(float)只能有一个小数,IP地址作为数字无效,它们必须是字符串,然后必须构建PAR