Jquery ajax调用抛出语法无效的标签错误

时间:2012-08-13 01:05:49

标签: ajax json jquery jsonp

我正在尝试对服务器进行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
                          ]
              }
            ]
}

2 个答案:

答案 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>'
            });
        } 
    });