【问题标题】:Data is lost after ajax callajax调用后数据丢失
【发布时间】:2021-01-05 11:21:28
【问题描述】:

在前两个之后我有一个 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?

【问题讨论】:

  • 您确定axisData 是否已设置? ajax 调用成功了吗?
  • 是的,我的 ajax 调用运行成功。我需要“返回数据”只是为了从响应中获取一些 json 数据
  • 你写了everything is ok。请检查console.log(respData)console.log(axisData) 的输出。它们是有效的 json 对象吗?
  • 似乎在这里工作正常 - jsfiddle.net/dq5515pd/8

标签: javascript jquery ajax


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

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

    考虑以下几点:

    $.ajax({
      data: {"data": data},
      dataType: "json",
      url: 'yourURl',
      success: function(data){
        return data;
     }

    【讨论】:

    • 数据传输正常,我用调试器检查过
    猜你喜欢
    • 2015-10-24
    • 2013-05-20
    • 2012-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-05
    • 2011-12-27
    相关资源
    最近更新 更多