V2EX = way to explore
V2EX 是一个关于分享和探索的地方
现在注册
已注册用户请  登录
推荐关注
Meteor
JSLint - a JavaScript code quality tool
jsFiddle
D3.js
WebStorm
推荐书目
JavaScript 权威指南第 5 版
Closure: The Definitive Guide
zyxk
V2EX  ›  JavaScript

前端小白问个 Javescript 的问题.调用新浪 API 获取 IP 归属地,必须点击两次才可以

  •  
  •   zyxk · 2017-10-18 23:26:42 +08:00 · 2869 次点击
    这是一个创建于 2579 天前的主题,其中的信息可能已经有所发展或是发生改变。
    我要的效果就是点击 IP 后,显示省市地址,现在效果已经实现,但是不知道为什么,需要点击两次连接后才可以显示出返回的结果.小白一枚,谁能帮忙改下吗,谢谢,代码如下.

    <!DOCTYPE html>
    <html lang="zh-cn">
    <head>
    <meta charset="utf-8">
    <title>后台中心</title>
    </head>
    <body style="width:96%;margin:auto;">
    <div class="panel panel-default">
    <table class="text-center table table-bordered table-hover table-striped">
    <thead>
    <tr>
    <th class="text-center" >ID</th>
    <th class="text-center">A</th>
    <th class="text-center">B</th>
    </tr>
    </thead>
    <script type="text/javascript">
    function getIpPlace(obj) {
    var script = document.createElement("script");
    var _ip = obj.innerHTML;
    script.type = "text/javascript";
    script.src = 'http://int.dpool.sina.com.cn/iplookup/iplookup.php?format=js&ip='+_ip;
    document.body.appendChild(script);
    {obj.innerText=remote_ip_info["province"] + "省" +remote_ip_info["city"] + "市"}
    }</script>
    <tr>
    <td>0</td>
    <td><a href="javascript:void(0)" onclick="getIpPlace(this)">222.88.88.88</a></td>
    <td><a href="javascript:void(0)" onclick="getIpPlace(this)">218.28.28.28</a></td>
    </tr>
    </table>
    </div>
    </body>
    </html>
    6 条回复    2017-10-19 11:15:43 +08:00
    580a388da131
        1
    580a388da131  
       2017-10-19 01:01:42 +08:00
    第一次获得返回的 remote_ip_info 第二次执行 remote_ip_info
    第一次点 222.88.88.88 之后,不刷新页面的话,再点 218.28.28.28 得到的值和第一个应该是一样的。
    580a388da131
        2
    580a388da131  
       2017-10-19 01:04:32 +08:00
    学习下 jq 的 ajax 方法吧
    ineed
        3
    ineed  
       2017-10-19 09:03:05 +08:00 via iPhone
    第一次点击的时候 script 还没加载完成就去获取 remote_ip_info,第二次点击已经存在了 ?
    meszyouh
        4
    meszyouh  
       2017-10-19 09:22:14 +08:00
    你这个不会报错么? 监听 script 的 onload 事件
    script.onload = function() {
    obj.textContent = remote_ip_info.province + "省" + remote_ip_info.city + "市"
    }
    majiawei
        5
    majiawei  
       2017-10-19 09:35:06 +08:00
    用 jQuery 的$.getScript()呗
    kosilence
        6
    kosilence  
       2017-10-19 11:15:43 +08:00
    打开浏览器控制台可以看到错误信息,点击时,js 内容还没有从后台返回,remote_ip_info 还没有被定义
    关于   ·   帮助文档   ·   博客   ·   API   ·   FAQ   ·   实用小工具   ·   2943 人在线   最高记录 6679   ·     Select Language
    创意工作者们的社区
    World is powered by solitude
    VERSION: 3.9.8.5 · 28ms · UTC 00:13 · PVG 08:13 · LAX 16:13 · JFK 19:13
    Developed with CodeLauncher
    ♥ Do have faith in what you're doing.