Jquery Ajax函数返回没有数据

时间:2017-03-13 15:41:46

标签: javascript jquery ajax

我有一个像这样的Jquery Ajax调用:

$('body').on('click', '#btnPopulate', function() {
alert(getTree());
});


function getTree() {
var url = getUrlPath() + "/StoryboardAdmin/BuildStoryboardViewModel";
$.ajax({
    type: "POST",
    cache: false,
    url: url,
    success: function (result) {
        if (result.success === true) {
            var data = result.data;
            return data;
        } else {
            return null;
        }
    },
    error: function (responseText, textStatus, errorThrown) {
        alert('Error - ' + errorThrown);
    }
});
}

当我点击按钮时,警告框只是说“未定义”,好像没有返回数据但是在ajax调用中," var data = result.data&#34 ;当我断点时,它有大量的数据。那么为什么这不会被送回警报箱呢?返回的数据是一个对象数组,每个对象还包含一个对象数组。但是数据肯定是从控制器返回到" var data"。

2 个答案:

答案 0 :(得分:0)

首先打电话给警报,轮胎警告getTree返回的值。由于getTree没有定义的返回值,因此会将undefined返回到第一个警报调用。

这就是您最初在警告框中看到“未定义”的原因。

尝试从Ajax调用成功回调中调用alert,而不是单击处理程序:

$('body').on('click', '#btnPopulate', function() {
  getTree(); 
}); 
function getTree() { 
  var url = getUrlPath() + "/StoryboardAdmin/BuildStoryboardViewModel"; 
  $.ajax({ 
    type: "POST", 
    cache: false, 
    url: url, 
    success: function (result) { 
      if (result.success === true) { 
        var data = result.data; 
        alert(data); 
      } else { 
        return null; 
      } 
    }, 
    error: function (responseText, textStatus, errorThrown) { 
      alert('Error - ' + errorThrown); 
    } 
  }); 
}

答案 1 :(得分:0)

听起来你通常无法理解AJAX,当你调用alert(getTree())时它会返回getTree()返回的内容......而不是AJAX调用。

您的return data;实际上是AJAX调用中成功处理程序的返回。因此,如果您要将alert(data);放在那里,那么当AJAX调用完成后,警报将显示正确的数据。