Jsonp跨域相关操作
2013-09-19 15:21
274 查看
跨域相关操作
1.js跨域操作:在两个页面中加上 document.domain="y.com";2.iframe中元素操作后父页跳转可用window.open('','_top')或window.parent.document.location.href = ''
3.jsonP:
var url = 'http://test.yaolan.com/home/GetJ?jsoncallback=?';
$.getJSON(url, function (data) {};
后台注意返回
public void GetJ()
{
string f = Request.QueryString["jsoncallback"];
Response.Clear();
Response.ContentType = "application/json";
//Response.ContentType = "application/javascript";
var json = new { a = "112", b = "224" };
Response.Write(String.Format(@"{0}({1});", f, 1));//这里返回json始终报错,只有返回简单的字符才可以成功,原因未知。怀疑是ContentType
Response.End();
}
会自动生成一个临时方法代替“?” 返回时必须处理这个临时方法和结果的json拼接后一起返回,否则无法执行回调方法
4.window.name解决跨域问题
有一个牛人写的:http://www.planabc.net/2008/09/01/window_name_transport/
附1:jquery getJson官方api:http://api.jquery.com/jQuery.getJSON/
附2:
jQuery jsonp跨域原理
实际上单jQuery还是实现不了跨域加载数据的,由于XMLHttpRequest的安全设置,是不允许直接跨域的。jQuery的jsonp虽然能跨域,但是还得请求的页面支持才行,如果请求的页面不理会jQuery发送的参数,是无法跨域的,实际上来说是获取不到输出的页面内容。jQuery jsonp跨域原理实际就是使用script标签加载配置对象中的跨域url,再使用script标签加载之前,会在客户端中注册一个新的函数作为回调函数提供给跨域页面使用,然后将函数名称替换掉url中jsoncallback=?后面的问号,最后请求的页面获取发送的回调函数名称,输出类似“回调函数名称(json数据)”的JavaScript代码来执行回调函数,参数为json数据。和代理意义差不多,jsonp需要代理页面输出执行回调函数的js代码。
通过jQuery的跨域原来我们知道,如果跨域页面不理会回调函数,不执行它,那么就无法获取到跨域页面输出的json函数,甚至可能会出现脚本错误,因为是使用script来加载跨域页面。
附3:转一篇js跨域的文章
http://wujiajun1020.iteye.com/blog/919293
相关文章推荐
- 前端跨域问题相关知识详解(原生js和jquery两种方法实现jsonp跨域)
- JSONP操作01_本地访问数据和跨域访问数据
- 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码和在线测试地址】
- 运用jsonp进行跨域操作
- 跨域请求问题以及相关解决方法之JSONP
- 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码】
- 跨域原理 与 AJAX跨域调用相关知识-CORS和JSONP
- 关于JSONP以及跨域相关
- AJAX跨域调用相关知识-CORS和JSONP(引)
- AJAX跨域调用相关知识-CORS和JSONP
- js操作cookie--跨域相关
- 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码和在线测试地址】
- AJAX跨域调用相关知识-CORS和JSONP
- WeX5 - AJAX跨域调用相关知识-CORS和JSONP
- 跨域数据操作jsonp
- 使用jsonp跨域调用百度js实现搜索框智能提示,并实现鼠标和键盘对弹出框里候选词的操作【附源码和在线测试地址】
- 笔记-Ajax[4]-JSONP跨域获取数据。
- Go开发如何把项目发布到github上的相关操作
- linux lvm的操作手册_pvcreate_vgcreate_lvcreate_相关
- 解决跨域的jsonp+Java实例