我使用下面的代码成功向lastFM发送了一个getJson请求。此代码位于javaScript脚本中。我可以从getJson函数中获取结果并在该函数之外将其用作变量,即在调用javaScript中吗?
function getArtistInfo(lastFmArtist) {
var urlArtist = 'http://ws.audioscrobbler.com/2.0/?callback=?',
params = {
method: "artist.getInfo",
artist: lastFmArtist,
format: "json",
api_key: "xxxxxxxxxx"
};
$.getJSON(urlArtist, params, function(data) {
var myartist = data.artist.bio.summary;
});
}
alert(myartist);
答案 0 :(得分:2)
您可以使用回调
function isFunction(object) {
return (typeof object == 'function');
}
function getArtistInfo(lastFmArtist, callback) {
var urlArtist = 'http://ws.audioscrobbler.com/2.0/?callback=?',
var params = {
method: "artist.getInfo",
artist: lastFmArtist,
format: "json",
api_key: "xxxxxxxxxx"
};
$.getJSON(urlArtist, params, function(data) {
var myartist = data.artist.bio.summary;
if (isFunction(callback))
{
callback(myartist);
}
});
}
function getArtistInfoComplete(myartist )
{
alert(myartist);
}
然后叫它
getArtistInfo(lastFmArtist, getArtistInfoComplete);
答案 1 :(得分:0)
尝试这种方式:
$.ajax({
type:"GET",
url:"file.php",
success:function(){
// get your php file returned values
},
error:function(){
// error message
}
});
尝试根据success
函数内的返回值进行所有编码。通过这种方式,您甚至不需要使用全局变量。如果您尝试访问success
之外的返回值,则无法获得任何结果。
答案 2 :(得分:-1)
不确定
首先,回调范围之外的变量会帮助你,而不是在回调中分配myartist,你可以将它分配给一个存在于函数外部的变量。
var myartist;
function getArtistInfo(lastFmArtist) {
var urlArtist = 'http://ws.audioscrobbler.com/2.0/?callback=?',
params = {
method: "artist.getInfo",
artist: lastFmArtist,
format: "json",
api_key: "xxxxxxxxxx"
};
$.getJSON(urlArtist, params, function(data) {
myartist = data.artist.bio.summary.toString();
});
}
但是知道它是否有效也很好,所以你想要另一个全局来跟踪回调是否已经命中。
使用这样的互联网服务,大多数会在你上线时立即返回,但在尝试在回调中使用变量之前检查以确保它是否有效总是好的。
您可能还想查看承诺函数,如下面的注释中所示。