获取数据阵列成功ajax

时间:2017-01-25 18:44:09

标签: javascript jquery ajax

如何在函数ajax之后获取数组。我知道有可能async false但这不好。我该怎么办?

var visit_time=[];
    var phrase=[];
    $.ajax({
       url: "https://api-metrika.yandex.ru/stat/sources/phrases.json",
       data: {
          id: "111111",
          pretty: "1",
          oauth_token: "code_token"
       },
       dataType: "jsonp",
       success: function(data) {

                var str = "";
                var len = data.data.length

                for (var i = 0; i < len; i++) {
                    visit_time.push(data.data[i].visit_time);
                    phrase.push(data.data[i].phrase)
                }

            alert(phrase)
       }

    });

    //get visit_time and phrase

2 个答案:

答案 0 :(得分:-1)

您可以在ajax请求成功后执行回调。

function callback(arr) {
    // do something with the array 
    console.log(arr);
}
success: function(data) {

  var str = "";
  var len = data.data.length

  for (var i = 0; i < len; i++) {
    visit_time.push(data.data[i].visit_time);
    phrase.push(data.data[i].phrase)
  }

  callback(data);
}

您还可以使用 Promise

的想法
   var visit_time=[];
    var phrase=[];

        function callback(arr) {
              alert(arr)
              console.log(arr);
            }

    $.ajax({
       url: "https://api-metrika.yandex.ru/stat/sources/phrases.json",
       data: {
          id: "11111",
          pretty: "1",
          oauth_token: "token"
       },
       dataType: "jsonp",

       success: function(data) {

                var str = "";
                var len = data.data.length

                for (var i = 0; i < len; i++) {
                    visit_time.push(data.data[i].visit_time);
                    phrase.push(data.data[i].phrase)
                }

             callback(phrase); // You have access here
       }

    });
     callback(phrase); // cannot access it as AJAX is asynchronous.

答案 1 :(得分:-1)

由于AJAX请求的异步性质,如果要处理响应,则必须将所述代码置于回调函数中:

success: function(data){
    // Only this code will have access to the response data. 
}

您可以考虑将代码拆分为函数并从成功回调中调用这些函数。