asp网站,如何利用提供的api和json的结果把ip地址转为所在城市呢?
用asp写了一个留言板,每个留言者都会显示ip,但是这样不方便,找了个api可以把ip地址转换为城市,是josn的,不知道具体该如何写。另外网站的js文件为外部文件,所以...
用asp写了一个留言板,每个留言者都会显示ip,但是这样不方便,找了个api可以把ip地址转换为城市,是josn的,不知道具体该如何写。另外网站的js文件为外部文件,所以能不能最好不要把asp代码写到js里面。
api地址:aaa.com/?app=ip.get&ip=8.8.8.8&appkey=10000
返回的结果:
{
"success":"1",
"result":{
"ip":"8.8.8.8",
"att":"美国",
"detailed":"美国",
"area_style_simcall":"美国",
"area_style_areanm":"美利坚合众国"
}
}
以上是返回的结果,网页代码如下:
.......
do while not rs.eof
%>
<li><a href="?id=<%=rs("id")%>" target="_blank"><%=rs("title")%></a> IP:<%=rs("ip")%></li>
<%
rs.movenext
loop
rs.close
set rs=nothing
%>
目标就是把上面的IP:<%=rs("ip")%>通过api转换为城市。
因为每一个页面都会有好几个ip,所以不会写了,求助!!
而且js是外部文件,最好能提交ip给外部的js,然后返回结果,然后输出,求助!! 展开
api地址:aaa.com/?app=ip.get&ip=8.8.8.8&appkey=10000
返回的结果:
{
"success":"1",
"result":{
"ip":"8.8.8.8",
"att":"美国",
"detailed":"美国",
"area_style_simcall":"美国",
"area_style_areanm":"美利坚合众国"
}
}
以上是返回的结果,网页代码如下:
.......
do while not rs.eof
%>
<li><a href="?id=<%=rs("id")%>" target="_blank"><%=rs("title")%></a> IP:<%=rs("ip")%></li>
<%
rs.movenext
loop
rs.close
set rs=nothing
%>
目标就是把上面的IP:<%=rs("ip")%>通过api转换为城市。
因为每一个页面都会有好几个ip,所以不会写了,求助!!
而且js是外部文件,最好能提交ip给外部的js,然后返回结果,然后输出,求助!! 展开
展开全部
我觉得都放在在服务器端处理很不友好,
不如这样,服务器端读取ip写入页面,给IP用div抱起来,作标识,
dim k:k=1
do while not rs.eof%><li><a href="?id=<%=rs("id")%>" target="_blank"><%=rs("title")%></a> <div id="ips_<%=k%>">IP:<%=rs("ip")%></div></li><%
k=k+1
rs.movenextloop
然后在前端页面加载完成后用js遍历 id:ips_k取值IP 异步读json 用js操作json替换掉 id:ips_k
------
json这种东西就应该放在前端完成啊
不如这样,服务器端读取ip写入页面,给IP用div抱起来,作标识,
dim k:k=1
do while not rs.eof%><li><a href="?id=<%=rs("id")%>" target="_blank"><%=rs("title")%></a> <div id="ips_<%=k%>">IP:<%=rs("ip")%></div></li><%
k=k+1
rs.movenextloop
然后在前端页面加载完成后用js遍历 id:ips_k取值IP 异步读json 用js操作json替换掉 id:ips_k
------
json这种东西就应该放在前端完成啊
更多追问追答
追问
我不会写json啊,能给代码嘛,谢谢啦,我会再追加分数的.....
追答
每一个页面都会有好几个ip,在遍历写入ip的时候直接用函数替换成地址。
IP:<%=rs("ip")%> ==> <%=dizhi(rs("ip"))%>
函数定义如下,
<script runat="server" language="jscript">
function getJSON(v) { return eval('(' + v + ')'); }
</script><!--服务器端js-->
<%
'==================================================
'从2进制数据流生成内容
'==================================================
Function BytesToBstr(strBody,CodeBase)
dim obj
set obj=Server.CreateObject("Adodb.Stream")
obj.Type=1
obj.Mode=3
obj.Open
obj.Write strBody
obj.Position=0
obj.Type=2
obj.Charset=CodeBase
BytesToBstr=obj.ReadText
obj.Close
set obj=nothing
End Function
function dizhi(ip)
dim url,s
url="aaa.com/?app=ip.get&appkey=10000&ip="&ip 'api自行修改
set xhr=server.CreateObject("microsoft.xmlhttp")
xhr.open "get",url,false
xhr.send
s=BytesToBstr(xhr.responsebody,"gb2312")'注意你那个页面的编码,要不可能出乱码
'这个api我没测试,也许会有错?
set o=getJSON(s)
dizhi=o.result.ip&o.result.att&o.result.area_style_simcall '这里写入页面的地址,可以根据json自己修改下。
end function%>
本回答被提问者和网友采纳
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
提供的api能做到吧 我是菜鸟不会
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询