如何将变量从JSON传递给原始Javascript?

时间:2013-07-11 17:43:17

标签: javascript json

我使用下面的代码成功向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);

3 个答案:

答案 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();
    });
}

但是知道它是否有效也很好,所以你想要另一个全局来跟踪回调是否已经命中。

使用这样的互联网服务,大多数会在你上线时立即返回,但在尝试在回调中使用变量之前检查以确保它是否有效总是好的。

您可能还想查看承诺函数,如下面的注释中所示。