账号密码登录
微信安全登录
微信扫描二维码登录

登录后绑定QQ、微信即可实现信息互通

手机验证码登录
找回密码返回
邮箱找回手机找回
注册账号返回
其他登录方式
分享
  • 收藏
    X
    js原生请求远程ip库url得到的数据如何处理?
    • 2019-07-05 00:00
    • 10
    73
    0

    先说下我要实现的功能:写1个js,纯js,不掺杂后端语言的情况下实现

    外国IP访问网站不跳转,国内IP指定地方不跳转,其他地区都跳转

    我的解决思路是:
    找到了1个ip库,前端页面中用
    <script type="text/javascript" src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
    访问,结果得到了浏览器ip

    ip = returnCitySN.cip;  //获得设备ip

    然后想通过var url = "http://freeapi.ipip.net/"+ip; 这个接口ajax get方式访问得到他的数据
    访问目标站的数据格式是:

    ["中国","天津","天津","","鹏博士"]

    很奇怪就是得不到我想要的效果,贴上代码,希望有人能指点我一下,不甚感激。

    <html>
    <head>
    <meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
    <title>无标题文档</title>
    <script type="text/javascript" src="http://pv.sohu.com/cityjson?ie=utf-8"></script>
    </head>
    <body>
    <script type="text/javascript">
    ip = returnCitySN.cip;  //获得设备ip
    var url = "http://freeapi.ipip.net/"+ip;
    var request = new XMLHttpRequest()
    request.onreadystatechange = function () { // 回调
     if (request.readyState === 4) { // 成功
      if (request.status == 200) { 
       alert(request.responseText) // 这个打印不出来数据?
      } else {
       console.log(request.status)
      }
     }
    }
    
    // GET 请求
    request.open('GET',url)
    request.send()
    alert(request.responseText)//这个也打印不出来数据?
    </script>
    </body>
    </html>

    另外我在这个案例中(http://www.w3school.com.cn/ti...)也尝试了将
    下面onclick里的参数由他自带的

    /example/xdom/note.xml

    换成我想的

    http://freeapi.ipip.net/120.227.44.221

    然后提交代码,访问还是获取不了,不知道问题出在哪里?

    像这种接口

    http://pv.sohu.com/cityjson?ie=utf-8

    它很好,它是返回来了1个js的代码语句

    var returnCitySN = {"cip": "120.227.44.221", "cid": "CN", "cname": "CHINA"};

    我很容易就在js里使用了它返回的数据

    但是像这个接口

    http://freeapi.ipip.net/120.227.44.221

    它返回的是个框框[]数据

    ["中国","湖南","长沙","","移动"]

    我该如何处理它?
    另外我在我的网站里使用ajax请求别的网站的数据,这是属于ajax跨域请求这个概念吗?

    1
    打赏
    收藏
    点击回答
    您的回答被采纳后将获得:提问者悬赏的 10 元积分
        全部回答
    • 0
    • 千里落花风 普通会员 1楼

      在JavaScript中,你可以使用XMLHttpRequest或者fetch API来发送HTTP请求并获取远程IP库的URL。

      以下是使用XMLHttpRequest的示例:

      javascript var xhr = new XMLHttpRequest(); xhr.open('GET', 'https://your-api-url.com'); xhr.onload = function () { if (xhr.status === 200) { console.log(xhr.responseText); } }; xhr.send();

      以下是使用fetch API的示例:

      javascript fetch('https://your-api-url.com') .then(response => response.json()) .then(data => console.log(data)) .catch(error => console.error(error));

      在这个示例中,我们首先创建了一个新的XMLHttpRequest对象。然后,我们使用open方法打开一个GET请求到指定的URL。在请求完成时,我们调用onload方法来处理服务器返回的数据。

      在fetch API中,我们使用then方法来处理服务器返回的数据。在这个例子中,我们首先使用response.json()方法将响应转换为JSON格式。然后,我们使用console.log()方法将数据打印到控制台。

      如果在fetch API中发生错误,我们使用catch方法来处理错误。在这个例子中,我们使用console.error()方法将错误打印到控制台。

      请注意,这只是一个基本的示例,实际的请求可能需要处理更多的错误和边界情况。

    更多回答
    扫一扫访问手机版