javascript jsonp网址请求

时间:2014-12-19 19:46:13

标签: javascript json jsonp

我有一个只接受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"}]

我需要从输出中输出名称属性的串联,即Ariel Barack + Matt 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);
});  

3 个答案:

答案 0 :(得分:1)

看看这一行:

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

它使用唯一的回调名称替换URL中的回调占位符。

现在查看您的网址:

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

您没有在其中放置回调占位符。

替换不替换任何内容,服务使用JSON而不是JSONP进行响应。这就是为什么它不起作用。

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

答案 1 :(得分: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">    

答案 2 :(得分:0)

迭代数据并连接name属性。

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