使用jquery中的ajax进行跨域访问
2012-12-25 23:03
447 查看
看到哦这篇文章感觉不错也就学习了一下:
原生态的ajax中是不能进行跨域访问服务器的,那么这样也算是一段残缺,今天看到园中可以使用jquery的jsonp协议进行跨域访问服务器着实很是新鲜:
先来了解神马是jsonp:
JSONP即JSON with Padding。由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源。如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方式称为JSONP。
很明显,JSONP是一种脚本注入(Script Injection)行为,需要特别注意其安全性。
样例代码:
一、客户端:
<script type="text/javascript">
jQuery(document).ready(function () {
$.ajax({
type: "get",
async: false,
url: "http://www.yzswyl.cn/demos/jsonp.php",
dataType: "jsonp",
jsonp: "callback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
jsonpCallback: "flightHandler", //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
success: function (data) { var $ul = $("<ul></ul>"); $.each(data, function (i, v) { $("<li/>").text(v["id"] + " " + v["name"]).appendTo($ul) }); $("#remote").append($ul); }, error: function () { alert('fail'); }
});
}); </script>
二、服务器端:
var json = "[{\"Key\":\"USD\",\"Value\":\"美元\"},{\"Key\":\"GBP\",\"Value\":\"英镑\"},{\"Key\":\"EUR\",\"Value\":\"欧元\"}]";
JavaScriptSerializer js = new JavaScriptSerializer();
string result= js.Serialize(json);
context.Response.Write(result);
原生态的ajax中是不能进行跨域访问服务器的,那么这样也算是一段残缺,今天看到园中可以使用jquery的jsonp协议进行跨域访问服务器着实很是新鲜:
先来了解神马是jsonp:
JSONP即JSON with Padding。由于同源策略的限制,XmlHttpRequest只允许请求当前源(域名、协议、端口)的资源。如果要进行跨域请求,我们可以通过使用html的script标记来进行跨域请求,并在响应中返回要执行的script代码,其中可以直接使用JSON传递javascript对象。这种跨域的通讯方式称为JSONP。
很明显,JSONP是一种脚本注入(Script Injection)行为,需要特别注意其安全性。
样例代码:
一、客户端:
<script type="text/javascript">
jQuery(document).ready(function () {
$.ajax({
type: "get",
async: false,
url: "http://www.yzswyl.cn/demos/jsonp.php",
dataType: "jsonp",
jsonp: "callback", //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(一般默认为:callback)
jsonpCallback: "flightHandler", //自定义的jsonp回调函数名称,默认为jQuery自动生成的随机函数名,也可以写"?",jQuery会自动为你处理数据
success: function (data) { var $ul = $("<ul></ul>"); $.each(data, function (i, v) { $("<li/>").text(v["id"] + " " + v["name"]).appendTo($ul) }); $("#remote").append($ul); }, error: function () { alert('fail'); }
});
}); </script>
二、服务器端:
var json = "[{\"Key\":\"USD\",\"Value\":\"美元\"},{\"Key\":\"GBP\",\"Value\":\"英镑\"},{\"Key\":\"EUR\",\"Value\":\"欧元\"}]";
JavaScriptSerializer js = new JavaScriptSerializer();
string result= js.Serialize(json);
context.Response.Write(result);
相关文章推荐
- 使用jquery的getjson()遇到的跨域访问问题(二)——使用拦截器进行数据封装
- WebWorks中使用JQuery的getJSON方法进行跨域访问
- 跨域解决方案 & 使用angularJS和jQuery进行Ajax请求的差异
- 跨域解决方案 & 使用angularJS和jQuery进行Ajax请求的差异
- 使用JQuery进行ajax请求时,让外界访问内部变量
- 使用jsonp进行跨域访问
- JQuery使用Ajax引发的跨域问题和解决方法
- 不断的跨域访问的时候,如果jquery,ajax都没办法解决的时候,用下面这个吧:
- JQuery+ajax+jsonp 跨域访问
- 跨域解决方案之一---->JQuery.Ajax JSONP解决跨域访问
- angular2 使用更改默认端口,并配置proxy.config.json进行跨域访问
- 跨域请求之jQuery的ajax jsonp的使用解惑
- jQuery使用$.ajax进行即时验证的方法
- 使用Jquery-Ajax改变Select标签进行联动
- 使用jquery+ajax实现页面访问后台接口
- JQuery+ajax+jsonp 跨域访问
- 用最简单的例子演示如何使用js或者$.ajax进行跨域请求
- 普元EOS中, 子系统和portal不在同一个域中,使用jquery的jsonp来解决portal跨域访问
- angular 使用$http.jsonp进行跨域访问以及修改目标JSON