日期:2014-05-16 浏览次数:20631 次
最近工作有个微博营销的需求需调用新浪微博API接口,碰到了不少问题,一一总结
1.利用ajax调用新浪微博API接口牵扯到ajax跨域的问题,而ajax跨域的问题有几种解决方案,如jsonp、动态script标签、iframe,各种方案的要求与适应场景各不相同,网上一搜一大把。在新浪微博的API说明中,只说明了返回的数据类型,未说明是否支持jsonp方法回写,其实新浪微博API是支持jsonp回写的,如用jquery发ajax请求
?
?
$.ajax({ // Weibo API. url: "https://api.weibo.com/2/users/show.json", type: "GET", dataType: "jsonp", data: { source: "XXX", uid: "XXX" }, success: function(data, textStatus, xhr){ alert(data.data.screen_name) } })?
通过抓包工作可以抓到发出的请求为
?
?
https://api.weibo.com/2/users/show.json?callback=jsonp1337331494998&source=XXX&uid=XXX?
如指明了dataType : jsonp的话,jquery额外加了个callback参数,这就是jsonp的风格,在此种方式下,请求不是以ajax方式发出去的,内部应该是通过动态生成script标签发出跨域请求的,在回调方法中获取返回状态码是获取不到的,如success方法中的textStatus始终为null,用抓包工具可以获取到该API返回了与API说明稍微不一样的数据
?
?
try{jsonp1337331494998({"code":1,"data":{"id":XXX,"idstr":"XXX","screen_name":"XXX","name":"XXX","province":"44","city":"3","lo...