您的位置:首页 > 产品设计 > UI/UE

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() 。这里是是关于

异常处理 的更多信息。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: