我試圖建立一個應用程序,從Facebook,LinkedIn,Twitter,StumbleUpon,Digg和Delicious等不同的社交網絡獲取有關URL的信息。LinkedIn和StumbleUpon的JSONP請求
我使用REST請求信息,主要是獲取JSON格式的響應。並解析他們與JavaScript(jQuery)
我沒有問題連接到Facebook,Twitter和美味與jQuerys $ .getJSON方法使用JSONP dataType(添加回調=?到url),但問題與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);
});
您無法向任意Web服務發出JSONP請求並期望得到結果 - 您調用的代碼必須正確設置才能處理JSONP請求 –
請您指點我正確的方向。我有點困惑,因爲我對twitter和facebook做了相同的調用,他們確實工作並且失敗,而LinkedIn卻沒有。真的很感激一個例子或一些資源。謝謝。 – Nick