【问题标题】:AJAX callback doesn't return data....as expectedAJAX 回调不返回数据....如预期的那样
【发布时间】:2014-12-11 11:45:37
【问题描述】:

我使用这个example 希望在 AJAX 调用后返回数据。基本上我执行 AJAX 调用一个回调函数来处理并返回所需的最终数据。但是,当我执行代码时,分配给获取数据的变量是未定义的,并且回调函数在之后正确执行......

这是执行 AJAX 调用的函数:

    function getgraphdata(callback){
    $.ajax({
        type: "GET",
        url: "DiCAST_hourly.csv",
        dataType: "text",
        async: false,
        success: callback,
        error: function(){alert("Error")}
        });
};

这是回调函数:

function processgraphData(allText) {
    var result = [];
    var allTextLines = allText.split(/\r\n|\n/);
    for (var i=1; i<allTextLines.length; i++) {
        if (allTextLines[i].split(",")[0] == 'LETO') {
            var line = allTextLines[i].split(",");
            for (var j = 1; j<line.length - 5; j += 5){
                result.push([line[j],line[j+1],line[j+2]]);
            };
            break;
            };
        };
    console.log("OK");
    console.log(result);
    return result;
    };

这些是我执行此代码的行:

      console.log("OKOK");
      var result = getgraphdata(processgraphData);
      console.log(result);
      console.log("OKOK");

这就是浏览器返回的内容:

 OKOK getinfo.js:135
 OK getinfo.js:86
[Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3], Array[3]] getinfo.js:87
undefined getinfo.js:137
OKOK 

【问题讨论】:

  • 尝试使用:成功:函数(响应){回调(响应); }
  • 没有任何变化,结果相同。

标签: ajax callback


【解决方案1】:

这将解决您的问题:

function getgraphdata(callback){
    var theresponse;
    $.ajax({
        type: "GET",
        url: "DiCAST_hourly.csv",
        dataType: "text",
        async: false,
        success:function(response){     
        theresponse = processgraphData(response);
        },
        error: function(){alert("Error")}
        });
    return theresponse;

【讨论】:

  • 抱歉,这并不能解决问题。谢谢
  • 添加 async:false 并尝试。
  • 仍然没有得到数据,但我现在认为问题出在我做分配的地方: var result = getgraphdata(processgraphData);
  • 很高兴您知道原因。
  • 使用 async: false,我确保在执行赋值之前执行回调,但是,我仍然没有将数据放入最终变量... estrange。
猜你喜欢
  • 2019-05-23
  • 2018-08-04
  • 2021-06-05
  • 1970-01-01
  • 2014-05-02
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多