2011-12-06 120 views
2

我試圖建立一個應用程序,從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); 
}); 
+0

您無法向任意Web服務發出JSONP請求並期望得到結果 - 您調用的代碼必須正確設置才能處理JSONP請求 –

+0

請您指點我正確的方向。我有點困惑,因爲我對twitter和facebook做了相同的調用,他們確實工作並且失敗,而LinkedIn卻沒有。真的很感激一個例子或一些資源。謝謝。 – Nick

回答

2

我知道這是一個老問題,但我的工作類似的東西,雖然沒有使用jQuery。我已經得到了LinkedIn使用不同的URL的工作:

https://www.linkedin.com/countserv/count/share?url={url}&format=jsonp 

在這種情況下對我來說,關鍵是使用針對格式jsonp值。 json沒有工作。你還需要包含你的回調函數。

至於StumbleUpon,我也收到錯誤,但如果我找到解決方案,我會更新這個答案。

+0

是的,它適用於linkedin :) – mahesh