欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  IT编程

asp ajax跨域提交数据

程序员文章站 2022-05-28 16:06:33
星期五写了个分类信息的小东东!在数据库里只有ip地址,一般访客不太清楚ip地址来源于哪个城市.如果在表里多一个列保存城市又没有真实性可言.如果能把ip地址变成城市多好呀.当...
星期五写了个分类信息的小东东!在数据库里只有ip地址,一般访客不太清楚ip地址来源于哪个城市.如果在表里多一个列保存城市又没有真实性可言.如果能把ip地址变成城市多好呀.当然可以去down下数据库.可就为这个需求觉得有点浪费.还好了有好多网站提供查询.如果能把它的结果变成我的.问题解决.
需要一个js函数.当每出来一条记录时,就把ip替换为城市:
复制代码 代码如下:

<script type="text/javascript">
function queryaddress(strid){
try{
var qip=document.getelementbyid("ip_"+strid);
var qurl='http://ip.wanvee.cn/getip.ashx?ipstr='+qip.firstchild.nodevalue;
var ajax=new ajax.request(qurl,{
method:'get',
onsuccess:function(strresponse){
var rescontent=strresponse.responsetext;
var strstruct=rescontent.substring(rescontent.lastindexof(",")+1,rescontent.length);
qip.innerhtml=strstruct.split(" ")[0];
}
});
}catch(e){}
}
</script>

写一个测试用例:
<span id="ip_2">221.123.123.123</span><script type="text/javascript">queryaddress('2')</script>
<span id="ip_3">221.123.123.123</span><script type="text/javascript">queryaddress('3')</script>
<span id="ip_4">221.123.123.123</span><script type="text/javascript">queryaddress('4')</script>
罗列一下我找的几个查询网址:
http://www.ip.cn/getip.php?action=queryip&ip_url=221.123.123.123
http://ip.wanvee.cn/getip.ashx?ipstr=221.123.123.123
以上两个只返回文本
http://www.youdao.com/smartresult-xml/search.s?type=ip&q=221.123.123.123
这个返回xml
写完了,意识到一个问题.ajax不支持跨域提交.这也不成问题:我们用脚本写一个页面.用msxml的load方法装载目标网址!就可以搞到我们感兴趣的数据!参考此贴:http://topic.csdn.net/t/20030619/12/1933920.html
js代码稍微变一下:
复制代码 代码如下:

function queryaddress(strid){
try{
var qip=document.getelementbyid("ip_"+strid);
var qurl='queryiplocal.asp?ip='+qip.firstchild.nodevalue;
var ajax=new ajax.request(qurl,{
method:'get',
onsuccess:function(strresponse){
qip.innerhtml=strresponse.responsetext;
}
});
}catch(e){}
}

下面的是asp文件源码:
复制代码 代码如下:

<%
response.contenttype="text/xml"
response.charset="gb2312"
dim strip,strpattern
strip=request.querystring("ip")
strpattern="^[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}.[0-9]{1,3}$"
if strip="" or isnumeric(strip) then
response.end()
elseif not serregvalidate(strpattern,strip) then
response.end()
end if
dim strurl:strurl="http://www.youdao.com/smartresult-xml/search.s?type=ip&q="
set parser=server.createobject("msxml2.domdocument")
parser.async=false
parser.validateonparse=true
parser.setproperty "serverhttprequest",true
parser.load(strurl)
if parser.parseerror.errorcode<>0 then
response.end()
end if
set currnode=parser.selectnodes("//product")
dim strlocal:strlocal=currnode.item(0).selectsinglenode("location").text
response.write split(strlocal," ")(0)
%>