asp ajax跨域提交数据

星期五写了个分类信息的小东东!在数据库里只有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)

%>

时间: 2024-07-28 19:09:31

asp ajax跨域提交数据的相关文章

asp ajax跨域提交数据_应用技巧

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

ajax 跨域提交数据实例详解

出于安全性的考虑,在AJAX应用中,浏览器通常都会限制跨域提交数据,但这又恰恰是非常常用的需求.比如在a.com的页面上中提交一些请求数据到b.com的服务器上,b.com服务器处理请求完毕后返回响应内容到a.com的页面上.如何解决呢,使用js是比较简单易实现的方案,缺点是代码跟应用相关,无法抽象出模板机制进行重用. 具体的原理和实现是这样的,在a.com的页面上,假设叫a.html, 提交数据的javascript事件中动态添加一个类型为javascript的节点,这个节点指向接收数据的b.

jsp防止跨域提交数据的具体实现

 这篇文章主要介绍了jsp防止跨域提交数据的具体实现,需要的朋友可以参考下  代码如下: //ArgsIsValidFilter .java过滤器代码清单:  package com.hety.uitl;    import java.io.IOException;  import java.util.Enumeration;    import javax.servlet.Filter;  import javax.servlet.FilterChain;  import javax.serv

jQuery使用ajax跨域获取数据的简单实例_jquery

jQuery使用ajax跨域获取数据的简单实例 var webMethod = "http://localhost:54473/Service1.asmx/HelloWorld"; jQuery.support.cors = true; //之前没有加这句老是提示no transport,我没去深想. $.ajax ({ type: "POST", contentType: "application/x-www-form-urlencoded",

解决ajax跨域请求数据cookie丢失问题

前端: 以jquery为例: 需要加入 复制代码 代码如下: xhrFields: {             withCredentials: true         },         crossDomain: true, $.ajax({         type: postType,         url: url,         data: postData || '',         xhrFields: {             withCredentials: tru

jquery实现ajax跨域读取数据的例子

我们知道,用服务端脚本做js来用可以实现通信,但是,他功能太简单,不够灵活,还是需要像ajax这样的通信来的方便.今天公司在使用phonegap时遇到了ajax跨域问题,我偷听了一下,总结了一下ajax两种跨域问题.嘿嘿. 当然这样应用场景是有前提的,一般情况下,我们都是在同个域名下,但是做客户端软件或手机应用,没有域,所以要解决跨域通信. js 要跨域的话,可以用: <script src="别的网站的js地址(这里的内空可以是动态生成的,如:aaa.jsp.bbb.aspx)都可以.&

Silverlight 2.0正式版跨域提交数据全攻略

[注]本文代码基于 Silverlight 2.0 正式版. Silverlight 2.0 正式版发布之后,在 HttpWebrequest 方面也发生了一些变化,以前的代码正式版 里面可能就无法运行了,具体的 变化主要有: 1,在调用 HttpWebRequest.BeginGetResponse() 之前,Request 流必须关闭: 2,HttpWebRequest.EndGetResponse() 抛出的异常,正式版之前, HttpWebRequest.BeingGetResponse

Ajax跨域获取数据的简便方法

跨域通信的限制是在浏览器端,也就是客户端上,所以可以从服务器端代码做文章.这和前几天gzip 的问题很相像了,当时服务器上的gzip流是因为被isa阻止而无法下载压缩后的文件,最后写了一个压缩 代理放在服务器上,强制返回压缩数据. 现在这个问题最简便的方法也是写一个代理来把js请求的数据从另外一个域转发到本域,然后再用js 访问代理. 比如代码: obj.sendRequest("http:www.abc.comtest.aspx? p1=tt&p2=sss"); 将变为 ob

jsp防止跨域提交数据的具体实现_JSP编程

复制代码 代码如下: //ArgsIsValidFilter .java过滤器代码清单: package com.hety.uitl; import java.io.IOException; import java.util.Enumeration; import javax.servlet.Filter; import javax.servlet.FilterChain; import javax.servlet.FilterConfig; import javax.servlet.Servl