我正在尝试构建一个应用程序,从不同的社交网络(例如 Facebook、LinkedIn、Twitter、StumbleUpon、Digg 和 Delicious)获取有关 URL 的信息。
我正在使用 REST 请求信息,并且大多数情况下都会收到 JSON 格式的响应。并使用 javascript (jQuery) 解析它们
我使用 JSONP 数据类型(在 URL 中添加回调=?)通过 jQuery 的 $.getJSON 方法连接到 Facebook、Twitter 和 Delicious 没有任何问题,但 LinkedIn 和 StumbleUpon 出现了问题。
当我使用相同的技术时,我遇到了错误。
对于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 做了响应测试并得到有效结果。所以看来问题出在我解析它的方式而不是响应本身。
对于 LinkedIn,我得到下一个
"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,我也遇到了错误,但如果找到解决方案,我会更新此答案。
关于jquery - 来自 LinkedIn 和 StumbleUpon 的 JSONP 请求,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8402941/