requirejs解决js跨域问题
2015-10-16 09:35
597 查看
JsonP是一种使用JS调用某些服务的方法。这是一个公认的解决跨域调用服务的方案,它只需要通过HTTP GET一段包含script标签的脚本。
只需要把回调函数参数值设为使用"define" ,就能用 RequireJS来实现JSONP。这意味着,你可以用JSONP的方式来获取一个模块。
最好只在初始化应用设置的时候使用这种方法。因为如果JSONP 服务超时,那其他通过define() 定义的模块将不会执行,并且异常处理也不能很好的运行。
jsonp服务,JSONP的callback参数为"callback",因此"callback=define"告诉API将JSON响应包裹到一个"define()"中。
[javascript] view
plaincopy
require(["http://example.com/api/data.json?callback=define"],
function (data) {
//data将作为此条JSONP data调用的API响应
console.log(data);
}
);
JSONP的这种用法应仅限于应用的初始化中。一旦JSONP服务超时,其他通过define()定义了的模块也可能得不得执行,错误处理不是十分健。JSONP 返回的值必须是一个Object。Array、String、Number都不行。
这种方式也不能用于长轮询式的连接 -- 这种APIs都会进行实时流处理。这种APIs在接收到每个响应后都需要清除缓存,而对于同一个 JSONP URL, RequireJS 只会请求一次-- 随后的都会使用缓存。
JSONP 服务在加载中的异常目前只有服务超时, 因为 script 标签加载没有提供更多网络异常信息。为了检测异常,你可以重写 requirejs.onError() 。这里是是关于
异常处理 的更多信息。
只需要把回调函数参数值设为使用"define" ,就能用 RequireJS来实现JSONP。这意味着,你可以用JSONP的方式来获取一个模块。
最好只在初始化应用设置的时候使用这种方法。因为如果JSONP 服务超时,那其他通过define() 定义的模块将不会执行,并且异常处理也不能很好的运行。
jsonp服务,JSONP的callback参数为"callback",因此"callback=define"告诉API将JSON响应包裹到一个"define()"中。
[javascript] view
plaincopy
require(["http://example.com/api/data.json?callback=define"],
function (data) {
//data将作为此条JSONP data调用的API响应
console.log(data);
}
);
JSONP的这种用法应仅限于应用的初始化中。一旦JSONP服务超时,其他通过define()定义了的模块也可能得不得执行,错误处理不是十分健。JSONP 返回的值必须是一个Object。Array、String、Number都不行。
这种方式也不能用于长轮询式的连接 -- 这种APIs都会进行实时流处理。这种APIs在接收到每个响应后都需要清除缓存,而对于同一个 JSONP URL, RequireJS 只会请求一次-- 随后的都会使用缓存。
JSONP 服务在加载中的异常目前只有服务超时, 因为 script 标签加载没有提供更多网络异常信息。为了检测异常,你可以重写 requirejs.onError() 。这里是是关于
异常处理 的更多信息。
相关文章推荐
- Storyboard里面的几种Segue区别及视图的切换:push,modal,popover,replace和custom
- 根据indexPath拿到UITableView的cell
- JS生成36为UUID
- requirejs学习笔记
- IOS-UITextField-全解
- UITableView小知识点总结
- POJ 2081 Recaman's Sequence(水的问题)
- iOS开发UI篇—ios应用数据存储方式(偏好设置)
- ValuesQuerySet对象 转换成json
- 复制ue中的十六进制内容
- 本地通知UILocalNotification
- 有效使用Django的QuerySets
- easyui实现datagrid行内编辑
- iOS开发——UI进阶篇(十九)UISearchBar控件简介
- UINavigationController + UIScrollView组合,视图尺寸的设置探秘(三)
- JSP自定义标签rtexprvalue属性用法实例分析
- build-android-in-OS-X-Yosemite-Xcode-7
- 关于easyUI中combobox多选并附加checkbox的实现
- Android UI-实现底部切换标签(fragment)
- IOS 动态获取 UILabel 元素的宽度和高度