我有一个像这样的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"。
答案 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调用完成后,警报将显示正确的数据。