2014-12-19 103 views
-1

我有一個只接受jsonp請求的url。我必須做的一個URL請求,服務器將與此迴應作爲輸出:javascript jsonp url請求

[{"id":213877,"pic":"https://graph.facebook.com/ariel.barack/picture?type=square","url":"https://angel.co/ariel-barack","name":"Ariel Barack","type":"User"},{"id":109396,"pic":"https://d1qb2nb5cznatu.cloudfront.net/users/109396-medium_jpg?1405528556","url":"https://angel.co/mattbarackman","name":"Matt Barackman","type":"User"}] 

我需要輸出名稱的串聯,從輸出即阿里爾巴拉克+馬特Barackman屬性。

我正在使用此代碼來做到這一點。有關下一步做什麼的建議?

function getJSONP(url, success) { 

var ud = '_' + +new Date, 
    script = document.createElement('script'), 
    head = document.getElementsByTagName('head')[0] 
      || document.documentElement; 

window[ud] = function(data) { 
    head.removeChild(script); 
    success && success(data); 
}; 

script.src = url.replace('callback=?', 'callback=' + ud); 
head.appendChild(script); 

} 

getJSONP('https://api.angel.co/1/search?query=barack&type=User', function(data){ 
console.log(data); 
}); 
+0

聽起來你只是需要遍歷'data'中找到的數組,你有沒有試過使用過? –

+0

咋,但我不知道是否有任何數據正在從URL中讀取。當我寫入document.write(data)而不是console.log(data)時,瀏覽器上沒有顯示任何內容 – user3371307

+0

您引用的輸出是JSON,而不是JSONP – Quentin

回答

0

您的jsonp調用錯誤。有很多方法可以執行jsonp調用,請嘗試使用此方法

<script> 
    function JSONPHandler(data) { 
     var names = ""; 
     for (var ii = 0; ii < data.length; ii++) { 
      names += data[ii].name; 
     } 
     alert(names); 

    }; 
</script> 
<script src="https://api.angel.co/1/search?query=barack&type=User&callback=JSONPHandler">  
+0

,但當我嘗試document.write(數據),我沒有看到正在從url中讀取的數據 – user3371307

+0

爲什麼document.write?使用console.log() – sbaglieri

+0

即使沒有輸出 – user3371307

0

迭代數據並連接name屬性。

var result = "";  
for(var i in data){ 
    result +=data[i].name; 
} 
+0

咋,但我不知道是否有任何數據正在從URL中讀取。當我編寫document.write(data)而不是console.log(data)時,瀏覽器上沒有顯示任何內容 – user3371307

+0

Document.write接受一個String的參數。數據是一個數組。 – aabadia

+0

document.write(data.toString())是我試圖非常具體的 – user3371307

1

看這句話:

script.src = url.replace('callback=?', 'callback=' + ud); 

它取代了一個獨特的回調名稱對應的URL回調佔位符。

現在看看你的網址:

'https://api.angel.co/1/search?query=barack&type=User' 

你沒有把回調佔位符它。

替換替換什麼都沒有,服務響應JSON而不是JSONP。這就是爲什麼它不起作用。

您需要在查詢字符串中包含callback=?

+0

我不這麼認爲,我需要查詢字符串 – user3371307

+0

@ user3371307中的回調 - 您確實需要它。這是JSONP如何工作的基本部分。 – Quentin

+0

我不太清楚我是否真的明白這一點。這個API的文檔說「所有的響應都是application/json類型,JSONP是被支持的 - 只是在查詢字符串中傳遞一個回調函數,響應的類型是text/javascript」。所以你可以堅持我做任何修改嗎? – user3371307