ajax调用后数据丢失

时间:2015-11-10 13:22:16

标签: javascript jquery ajax

我在前两次之后收到了一个ajax电话。我需要将这些调用的结果传递给新的调用,所以我执行以下操作

    $.when(getRespData(), getAxisComponents()).done(function (respData, axisData) {
     var a = respData; //everything is ok
     var b = axisData; //everything is ok
     $.ajax({
           dataType: "json",
           url: '/rest/visualization/' + taskName + '/workload?runName=' + runName+ '&type=' + 'VAL',
           success: (function (data) {
              var c = respData; //everything is ok
              var d = axisData; // Uncaught ReferenceError: axisData is not defined
           }

但是当我尝试在我的新ajax调用中获取我的axisData时,我得到了Uncaught ReferenceError,尽管使用respData的操作是可以的。 我的前2个ajax调用看起来像

function getRespData() {
   return $.ajax({
     dataType: "json",
     url: '/rest/visualization/' + taskName + '/workload?runName=' + runName + '&type=' + 'RESP',
     success: (function (data) {
          return data;
   })
 });

}

function getAxisComponents() {
  return $.ajax({
     dataType: "json",
     url: '/rest/visualization/' + taskName + '/workload/axis?runName=' + runName,
     success: (function (data) {
          return data;
   })
 });

}

其中runName,type,taskName是包含所有这些ajax调用的函数的一些参数。 如何修复此错误,以便我能够访问内部ajax调用中的respData和axisData?

2 个答案:

答案 0 :(得分:2)

我解决了它把 async false 和从 ajax 调用中声明一个数组,就像这样

let array = [];
    $.ajax({
        url: path,
        type: 'GET',
        async: false,
        dataType: 'json',
        success: function(response){
            array = response;
        }
    });
    return array;

答案 1 :(得分:-2)

您正在调用成功函数中的数据,但在此之前未设置数据。

在jQuery .ajax函数中,data是在执行Ajax请求时发送到服务器的数据,这就是为什么你可能认为它丢失了(因为它从来没有)。

请考虑以下事项:

  testProjectApp.factory('updateClient', function($http, $q) {
   return { ...