2012-03-10 78 views
6

我想特別做的是通過抓取請求返回的json數據來獲取Vimeo縮略圖圖像。由於javascript文件是用戶調用的小型遠程文件,因此我無法使用jquery,並且jQuery會多次增加其大小。沒有Jquery獲取遠程JSON?

我看了,似乎一切都在談論jQuery或獲取它在另一種語言(例如PHP)。

我發現我需要做這個至今:

var script = document.createElement('script'); 
script.src = theUrlToMakeTheRequest; 
document.getElementsByTagName('head')[0].appendChild(script); 

我不知道我需要做的回調不知道我需要做的是能夠使用得到的網址追加。

+2

JSONP或CORS? – 2012-03-10 19:38:28

+0

@MДΓΓБДLLJSONP支持。 – qitch 2012-03-10 19:43:38

+0

@qitch:請求返回的數據格式是什麼?你確定這是JSON,而不是例如。 JSONP?向我們提供存儲在'theUrlToMakeTheRequest'中的URL的可用資源的確切內容。 – Tadeck 2012-03-10 19:44:59

回答

7

一個jQuery兼容的解決方案還有Vimeo的文檔

http://vimeo.com/api/docs/simple-api

看起來你可以把一個?回調= MyFunction的參數在網址的結尾做回調的JSONP類型。所以你的代碼可能看起來像這樣。

function myfunction(data) { 
    alert(data); 
} 

var script = document.createElement('script'); 
script.src = theUrlToMakeTheRequest + '?callback=myfunction'; 
document.getElementsByTagName('head')[0].appendChild(script); 

他們的下載頁面看起來只是你正在做的事情的例子。 http://vimeo.com/api/docs/downloads

+1

(這也被稱爲JSONP。) – 2012-03-10 19:53:19

3

您可以用原始的XMLHttpRequest做到這一點,

或爲能做到這一點看看zepto.js

如果你只是包括zepto.js和ajax.js從小型輕量化庫.. 。 https://github.com/madrobby/zepto/tree/master/src

你將不得不在30K未壓縮的JavaScript(大概< 4K精縮)

+0

我不確定XMLHttpRequest解決方案在這種情況下會起作用,因爲它位於另一個域中。 – 2012-03-10 19:45:18

+0

嗯,是的,這取決於Vimeo是否發送'Access-Control-Allow-Origin'標題,然後跨域呼叫可能被阻止。看起來JSONP是其他答案中最好的選擇。 – danmux 2012-03-10 19:54:29