将已解析的JSON数据保存到Variable中

时间:2014-06-17 08:23:27

标签: javascript ajax json

我对json支持的链接(url1)进行了这个ajax请求调用:

$.ajax({
     type : "GET",
     dataType : "json",
     url : url1,
     success: function (data) {
            c1lat1 = [(data[0].boundingbox[0]),(data[0].boundingbox[2])];
            alert(c1lat1);
     }
});

这完全正常,警报确实提供了我想要的号码。但是,如果我试试这个:

$.ajax({
     type : "GET",
     dataType : "json",
     url : url1,
     success: function (data) {
            c1lat1 = [(data[0].boundingbox[0]),(data[0].boundingbox[2])];
     }
});
alert(c1lat1);

它给了我一个空的警告框,因此看起来它没有将值保存到请求中的变量中。

我如何解决这个问题,因为我需要检索这个值?

谢谢!

2 个答案:

答案 0 :(得分:2)

由于ajax默认为 async ,因此您有两个选项 -

  1. 在回调中警告变量。在回调中得到结果后必须继续 -

    $.ajax({
      type : "GET",
      dataType : "json",
      url : url1,
      success: function (data) {
          c1lat1 = [(data[0].boundingbox[0]),(data[0].boundingbox[2])];
          alert(c1lat1);
      }
    });
    
  2. 使用async: false使呼叫同步,这将使您的呼叫同步,控件将在$.ajax()之后出现;

    $.ajax({
      type : "GET",
      async: false,
      dataType : "json",
      url : url1,
      success: function (data) {
          c1lat1 = [(data[0].boundingbox[0]),(data[0].boundingbox[2])];
      }
    });
    alert(c1lat1);
    
  3. Reference

答案 1 :(得分:-2)

1)它的范围问题。 success内的c1lat1是局部变量。将其定义为全球。

2)success是异步的,因此您的警报在服务器响应之前发生,因此尚未设置变量。将提醒移至success