我有一个只接受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);
});
答案 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;
}