我正在尝试对服务器进行ajax调用,返回一个json对象,但它无法工作......无法弄清楚什么是错的,请帮助......这是代码:
$.ajax ({
type : "GET",
url : "http://api.zero1.org/v1/artists",
data : "",
dataType : "jsonp"
}).done (function(msg){
var artistNames = msg.artists[0].name;
for (var i = 0; i < artistNames.length; i++) {
console.log(artistNames[i])
$('div#artists').html(function() {
return '<li><a href="details.html"><h3 class="ul-li-heading">' + artistName[i] + '</h3><p class="ul-li-desc">artist/location</p></a></li>'
});
}
})
JSON对象是这样的:
{
artists: [
{
artistid: "5",
name: "Outdoor Urban Scene ",
bio: "",
programs: [
1,
2,
3,
4
]
},
{
artistid: "87",
name: "Radames Ajna",
bio: "Technical development of Mobile Crash v2",
programs: [
1,
2,
3,
4
]
}
]
}
答案 0 :(得分:0)
您尝试使用的资源不支持JSONP。必须正确配置服务器以处理JSONP请求。
您可以编写自己的一些服务器端代码来处理JSON并提供服务,或者您可以使用来自Yahoo的HQL等服务:
$.ajax({
url: 'http://query.yahooapis.com/v1/public/yql',
data: {
q: 'select * from json where url="http://api.zero1.org/v1/artists"',
format: 'json'
},
type: 'get',
dataType: 'jsonp'
})
答案 1 :(得分:0)
请尝试在您的ajax调用中添加crossDomain
选项。您的代码必须以;
$.ajax ({
type : "GET",
url : "http://api.zero1.org/v1/artists",
data : "",
dataType : "jsonp",
crossDomain: true
}).done (function(msg){
var artistNames = msg.artists[0].name;
for (var i = 0; i < artistNames.length; i++) {
console.log(artistNames[i])
$('div#artists').html(function() {
return '<li><a href="details.html"><h3 class="ul-li-heading">' + artistName[i] + '</h3><p class="ul-li-desc">artist/location</p></a></li>'
});
}
});