0

json オブジェクトを返すサーバーに ajax 呼び出しを実行しようとしていますが、機能していません...何が問題なのかわかりません助けてください...コードは次のとおりです。

$.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
                          ]
              }
            ]
}
4

2 に答える 2

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'
})
于 2012-08-13T01:13:48.870 に答える
0

crossDomainオプションを ajax 呼び出しに追加してみてください。コードは次で終わる必要があります;

$.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>'
            });
        } 
    });
于 2012-08-13T02:02:47.843 に答える