我正在提出API请求,但我无法弄清楚为什么会这样。
当我检查网络选项卡时,我请求的数据是正确的,但它不会在控制台中打印出来。
我正在使用Musixmatch API
有什么想法吗?
$.ajax({
type: "GET",
data: {
"apikey": musixmatch,
"q_track": song,
"q_artist": artist,
"format":"json",
},
url: "https://api.musixmatch.com/ws/1.1/matcher.track.get",
dataType: "jsonp",
contentType: 'application/json',
success: function(response)
{
console.log(response);
}
});
答案 0 :(得分:1)
你做错了!
documentation for the API明确指出格式有三种选择:JSON,JSONP和XML。
由于您正在使用客户端代码,您希望使用JSONP,但是您无法告诉jQuery期望JSONP然后要求API仅返回JSON,您还必须将format选项更改为JSONP,以便API返回
$.ajax({
type: "GET",
data: {
"apikey": 'musixmatch',
"q_track": 'song',
"q_artist": 'artist',
"format": "jsonp",
},
url: "https://api.musixmatch.com/ws/1.1/matcher.track.get",
dataType: "jsonp",
contentType: 'application/json',
success: function(response) {
console.log(response);
}
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
答案 1 :(得分:0)
代码中的错误:
"format":"json",
此处不应有逗号。其次,尝试删除以下两行,它应该正常工作:
dataType: "jsonp",
contentType: 'application/json',
最后,如果上述方法不起作用,请尝试:
$.getJSON("https://api.musixmatch.com/ws/1.1/matcher.track.get", {
"apikey": musixmatch,
"q_track": song,
"q_artist": artist,
"format": "json"
}, function(response) {
console.log(response);
});
上述方法是最好的,因为它专门用于从API获取JSON输出。这应该是正确的方法。
$.getJSON("https://api.musixmatch.com/ws/1.1/matcher.track.get", {
"apikey": "",
"q_track": "Hello",
"q_artist": "Hi",
"format": "json"
}, function(response) {
console.log(response);
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>