因此,我已经通过搜索引擎优化和互联网查看了一些指示灯,但却无法找到任何能击中头部钉子的东西。
我试图从函数中返回一个值。以下内容将在警报中显示数据,因此我知道正确的值是从JSON调用返回的:
function getTitle(){
var q= 'https://www.googleapis.com/youtube/v3/videos?id=[VIDEOID]&key=[APIKEY]&fields=items(snippet(title))&part=snippet'
$.ajax({
url: q,
dataType: "text",
success: function(data){
data = JSON.parse(data);
alert(data.items[0].snippet.title);
}
});
}
getTitle();
但是当我尝试从函数中返回数据时:
function getTitle(){
var q= 'https://www.googleapis.com/youtube/v3/videos?id=[VIDEOID]&key=[APIKEY]&fields=items(snippet(title))&part=snippet'
$.ajax({
url: q,
dataType: "text",
success: function(data){
data = JSON.parse(data);
return data.items[0].snippet.title;
}
});
}
alert(getTitle());
我得到 undefined 。
如果有人能告诉我自己是个傻瓜,我会很感激。
答案 0 :(得分:5)
函数$.ajax
是异步的。函数getTitle
将立即返回为undefined。如果您想对数据执行某些操作,请将该代码放在success
函数中:
function getTitle(){
var q= 'https://www.googleapis.com/youtube/v3/videos?id=[VIDEOID]&key=[APIKEY]&fields=items(snippet(title))&part=snippet'
$.ajax({
url: q,
dataType: "text",
success: function(data){
data = JSON.parse(data);
setTitle(data.items[0].snippet.title);
}
});
}
function setTitle(title){
//do something
}
答案 1 :(得分:0)
$.ajax
是异步的,使用回调函数来获取数据。
function getTitle() {
var q = 'https://www.googleapis.com/youtube/v3/videos?id=[VIDEOID]&key=[APIKEY]&fields=items(snippet(title))&part=snippet'
$.ajax({
url: q,
dataType: "text",
success: function(data) {
data = JSON.parse(data);
success(data);
}
});
}
function success(data) {
alert(data.items[0].snippet.title);
}