以下代码:
$.ajax({
type:'GET',
url:'http://ws.audioscrobbler.com/2.0/?method=artist.search&artist=megadeath&api_key=b5bd5e1d31bf4188a6bcd329c964f6f2&limit=5&format=json&callback=?',
success : function(){
console.log("slurped up data");
},
complete: function(){
console.log("just completed the call");
},
error : function(){
console.log("something stinks in Denmark");
},
});抛出错误。当我在浏览器中查看REST调用时,我看到它实际上生成了输出,所以我认为错误是在jQuery处理数据的方式中弹出的。人们以前遇到过这个问题吗?对如何处理这个问题有什么建议吗?
发布于 2011-09-27 02:38:45
如果你把&callback=?从一端砍掉,它就能工作:
http://jsfiddle.net/Y44ZD/et
请注意,在fiddle上的示例中,我是如何获得错误消息的:
error : function(e,d,f){
alert(f);
}我得到的是“意想不到的令牌?”
http://api.jquery.com/jQuery.ajax/
说:
错误(jqXHR、textStatus、errorThrown)函数
请求失败时要调用的函数。该函数接收三个参数: jqXHR (在jQuery 1.4.x,XMLHttpRequest中)对象、描述所发生的错误类型的字符串和一个可选的异常对象(如果发生的话)。
你的代码应该是:
$.ajax({
type:'GET',
url:'http://ws.audioscrobbler.com/2.0/?method=artist.search&artist=megadeath&api_key=b5bd5e1d31bf4188a6bcd329c964f6f2&limit=5&format=json',
success : function(){
console.log("slurped up data");
},
complete: function(){
console.log("just completed the call");
},
error : function(){
console.log("something stinks in Denmark");
},
});编辑(注释中的问题):我必须阅读last.fm文档,但通常只有当远程服务器要与您的服务器联系并提供答案时,才需要在请求中指定回调。此技术用于更安全的通信(例如,与在线支付处理公司进行付款),当响应您的请求返回数据时,这取决于您如何处理它,例如:
$.ajax({
type:'GET',
datatype:'json',
url:'http://ws.audioscrobbler.com/2.0/?method=artist.search&artist=megadeath&api_key=b5bd5e1d31bf4188a6bcd329c964f6f2&limit=5&format=json',
success :
function(data){
$.each(data.results.artistmatches.artist, function(key, val) {
$('body').append('<a href="'+val.url+'">'+val.name + '</a><br />');
});
},
complete: function(){
alert("just completed the call");
},
error : function(e,d,f){
console.log(f);
},
});下面是示例:http://jsfiddle.net/rS3p9/7/
(请注意,如果您像我一样在解释json工具时遇到问题,请参阅下面的帮助:http://jsonformatter.curiousconcept.com/,它可以很好地格式化它,这样您就可以看到发生了什么;-)
编辑:好的,我刚刚检查了文档:http://www.last.fm/api/show?service=272
他们没有提到回调:
限制(可选):每页要获取的结果数。默认为50。
page (可选):要获取的页码。默认为首页。
artist (必填):艺术家姓名
api_key (必填):Last.fm接口密钥。
https://stackoverflow.com/questions/7559437
复制相似问题