我试图建立一个应用程序,从不同的社交网络,如Facebook, LinkedIn, Twitter, StumbleUpon, Digg和Delicious获取URL信息。
我请求信息与REST,主要是得到JSON格式的响应。然后用javascript (jQuery)解析
我没有问题连接到Facebook, Twitter和Delicious与jquery $。getJSON方法使用JSONP数据类型(添加回调=?到url),但问题是LinkedIn和StumbleUpon。
当我使用相同的技术,我得到错误。
For StumbleUpon
"invalid label"
{"result":{"url":"http://www.google.com/","in_index":true,"publicid":"2pI1xR","views":201756,"title":"Google","thumbnail":"http://cdn.stumble-upon.com/mthumb/31/10031.jpg","thumbnail_b":"http://cdn.stumble-upon.com/bthumb/31/10031.jpg","submit_link":"http://www.stumbleupon.com/submit?url=http://www.google.com/","badge_link":"http://www.stumbleupon.com/badge?url=http://www.google.com/","info_link":"http://www.stumbleupon.com/url/www.google.com/"},"timestamp":1323182766,"success":true}
显然它不能没有JSONP请求类型,因为它的跨域请求。我做了一些研究,发现问题可能是jQuery发送JSONP请求,但得到一个JSON响应,然后出错。如果这是真的,我不知道我应该做些什么来弥补。我用JSONLint做了一个响应测试,得到了有效的结果。所以问题似乎是我解析它的方式,而不是在响应本身。
For LinkedIn i get next
"missing ) after argument list"
IN.Tags.Share.handleCount({"count":18118,"url":"http://www.google.com/"}
显然是无效的JSON和jQuery错误。有没有别的方法可以得到这些数据?
所以我有点卡在这里,因为我看到的结果,但我不能让他们解析。
PS我不希望使用服务器端代码。
下面是我使用的代码:var url = 'http://www.google.com';
// StumbleUpon
$.getJSON("http://www.stumbleupon.com/services/1.01/badge.getinfo?url=" + url +"&callback=?", function (data) {
console.log(data);
});
$.getJSON("http://www.linkedin.com/cws/share-count?url=" + url +"&callback=?", function (data) {
console.log(data);
});
我知道这是一个老问题,但我正在做类似的事情,虽然不使用jQuery。我已经让LinkedIn使用不同的URL工作:
https://www.linkedin.com/countserv/count/share?url={url}&format=jsonp
在这个实例中,我的关键是使用jsonp
值作为格式。json
不起作用。您还需要包含回调函数。
至于StumbleUpon,我也有错误,但如果我找到解决方案,我会更新这个答案。