2013-07-26 33 views
0

我正在开发一个Web应用程序。与Last.fm API会谈。除非艺术家参数包含数字或不寻常的字符(例如“U2”,“Ke $ ha”等),否则它工作正常。我如何正确编码参数?编码.getJSON()API调用

for (var item in billboard) { 
     track = billboard[item]['song']; 
     artist = billboard[item]['artist']; 
    } 
    $.getJSON("http://ws.audioscrobbler.com/2.0/?method=track.search&artist=" + artist + "&track=" + track + "&api_key=(myapikey)&format=json&callback=?", function(data) { 
      try { 
      var matches = data['results']['trackmatches']['track'][0] 
      } 
      catch(err) { 
      returned = data['results']['opensearch:Query']['searchTerms'] 
      $('#album-display').find('ul').append(returned + "<br>") 
      } 
      artist = matches['artist'] 
      track = matches['name'] 
     }); 
    } 

var billboard = { 
"5-23-1987": {"artist": "U2", "song": "With Or Without You"}, 
"10-15-1988": {"artist": "UB40", "song": "Red Red Wine"}, 
"3-7-2009": {"artist": "Flo Rida Featuring Ke$ha", "song": "Right Round"}, 
... 
} 

回答

1

您需要在您的请求中转义URL,并且其中一些字符不合法或导致问题。更改

$.getJSON("http://ws.audioscrobbler.com/2.0/?method=track.search&artist=" + artist + "&track=" + track + "&api_key=(myapikey)&format=json&callback=?", function(data) { 

var query = "method=track.search&artist=" + encodeURIComponent(artist) + "&track=" + encodeURIComponent(track) + "&api_key=(myapikey)&format=json&callback=?"; 
$.getJSON("http://ws.audioscrobbler.com/2.0/?" + query, function(data) {