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

2017-10-18 23:26:42 +08:00
 zyxk
我要的效果就是点击 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>
2703 次点击
所在节点    JavaScript
6 条回复
580a388da131
2017-10-19 01:01:42 +08:00
第一次获得返回的 remote_ip_info 第二次执行 remote_ip_info
第一次点 222.88.88.88 之后,不刷新页面的话,再点 218.28.28.28 得到的值和第一个应该是一样的。
580a388da131
2017-10-19 01:04:32 +08:00
学习下 jq 的 ajax 方法吧
ineed
2017-10-19 09:03:05 +08:00
第一次点击的时候 script 还没加载完成就去获取 remote_ip_info,第二次点击已经存在了 ?
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
2017-10-19 09:35:06 +08:00
用 jQuery 的$.getScript()呗
kosilence
2017-10-19 11:15:43 +08:00
打开浏览器控制台可以看到错误信息,点击时,js 内容还没有从后台返回,remote_ip_info 还没有被定义

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/398780

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX