一、跨域的集中方法:
- 服务器端发送请求,服务器作为中继代理(此方法不理解)
- iframe
- script标签
通过动过动态生成script标签,并将src指向目标源的方式
原生实现方式示例:
var url="www.xxx.baidu.com/aa.js",
scriptTag=document.createElement("script");
scriptTag.src=url;
document.getElementByTagName("head")[0].appendChild(scriptTag);
function showSth(data){
alert(data.a);
}
////////////aa.js
var aa={"a":"A"};
showSth(aa);
二、JSONp:
1、客户端
使用script标签实现跨域访问、可在url中指定回调函数、获取json数据并在指定的回调函数中执行
Jquery实现jsonp
//$.getJSON
var url="wwwa.xxx.baidu.com/aa.js?callback=?"//使用?作为回调函数名,jquey会自动生成随机名替换?号。
$.getJSON(url,function(jsoon){
alert(json.name+json.Email);
});
//$.ajax;
var url=www.xxx.baidu.com/aa.asmx?code=xx
$.ajax({
url: url,
dataType: jsonp,
jsonp:”callback”,//传递给请求处理程序的参数名,用来获取jsonp回调函数名(默认为“callback”,自动在URL中加上callback=?参数)
jsonpCallback:”GetUser”,//自定义的jsonp回调函数名(默认为jquery自动生成的随机函数名),此参数通常不用设置
success:function(json){
alert(json.name+json.Email);
}
});
jQuery 只支持get方式的jsonp实现。
jsonp的缺点:如果返回的数据格式有问题或返回失败了,并不会报错。
2、服务端
string jsoncallback = context.Request["callback"]; //如果不指定jsoncallback参数名,则返回随机函数名。
string jsonp=jsoncallback+"("+ new javascriptSerializer(new {Name="a",Email="B"})+")"
context.Response.ContentType = "text/plain";
context.Response.Write(jsonp);
到此这篇关于Jquery+Ajax实现跨域访问的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持编程网。