requirejs解决js跨域问题

    JsonP是一种使用JS调用某些服务的方法。这是一个公认的解决跨域调用服务的方案,它只需要通过HTTP GET一段包含script标签的脚本。

    只需要把回调函数参数值设为使用"define" ,就能用 RequireJS来实现JSONP。这意味着,你可以用JSONP的方式来获取一个模块。

    最好只在初始化应用设置的时候使用这种方法。因为如果JSONP 服务超时,那其他通过define() 定义的模块将不会执行,并且异常处理也不能很好的运行。 

       jsonp服务,JSONP的callback参数为"callback",因此"callback=define"告诉API将JSON响应包裹到一个"define()"中。

[javascript]  view plain copy
  1. require(["http://example.com/api/data.json?callback=define"],  
  2.     function (data) {  
  3.         //data将作为此条JSONP data调用的API响应  
  4.         console.log(data);  
  5.     }  
  6. );  

       JSONP的这种用法应仅限于应用的初始化中。一旦JSONP服务超时,其他通过define()定义了的模块也可能得不得执行,错误处理不是十分健。JSONP 返回的值必须是一个Object。Array、String、Number都不行。

    这种方式也不能用于长轮询式的连接 -- 这种APIs都会进行实时流处理。这种APIs在接收到每个响应后都需要清除缓存,而对于同一个 JSONP URL, RequireJS 只会请求一次--  随后的都会使用缓存。

    JSONP 服务在加载中的异常目前只有服务超时, 因为 script 标签加载没有提供更多网络异常信息。为了检测异常,你可以重写 requirejs.onError() 。这里是是关于 异常处理 的更多信息。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值