asp ajax跨域提交数据
2018-09-06 11:43
星期五写了个分类信息的小东东!在数据库里只有ip地址,一般访客不太清楚IP地址来源于哪个城市.如果在表里多一个列保存城市又没有真实性可言.如果能把IP地址变成城市多好呀.当然可以去down下数据库.可就为这个需求觉得有点浪费.还好了有好多网站提供查询.如果能把它的结果变成我的.问题解决.
需要一个js函数.当每出来一条记录时,就把ip替换为城市:
复制代码 代码如下:
<script type=text/javascript>
function queryAddress(strID){
try{
var qIp=document.getElementById(ip_+strID);
var qUrl=
var ajax=new Ajax.Request(qUrl,{
method:get,
onSuccess:function(strResponse){
var resContent=strResponse.responseText;
}
});
}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>
罗列一下我找的几个查询网址:
以上两个只返回文本
这个返回XML
写完了,意识到一个问题.ajax不支持跨域提交.这也不成问题:我们用脚本写一个页面.用msxml的load方法装载目标网址!就可以搞到我们感兴趣的数据!参考此贴:
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){
}
});
}catch(e){}
}
下面的是ASP文件源码:
复制代码 代码如下:
<%
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=
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)
%>
下一篇:ASP下检测图片木马的函数代码