我有这段代码(问题是我无法从结果文件中获取返回值):
function resultit(id) {
var res;
$.ajax({
url: "result",
type: 'POST',
data: "id=" + id,
success: function (result) {
res = result;
if (result == 0) {
alert('warning', 'FAILED !');
} else {
alert('danger', 'SUCCESS !');
}
}
});
return res;
}
alert(resultit(id)); // always undefined
您能否建议进行任何修改以获得返回值?提前谢谢你。
答案 0 :(得分:0)
问题是您的res
变量在异步回调中被赋值(ajax
success
函数)。这样做的结果是在return res;
分配值之前执行了res
语句。
为了更清楚地了解正在发生的事情,试试这个
function resultit(id) {
var res;
$.ajax({
url: "result",
type: 'POST',
data: "id=" + id,
success: function (result) {
res = result;
alert('And this will happen third: ' + res); // ADD THIS LINE
if (result == 0) {
alert('warning', 'FAILED !');
} else {
alert('danger', 'SUCCESS !');
}
}
});
alert('This will happen second'); // AND THIS LINE
return res;
}
alert('This will happen first: ' + resultit(id)); // AND CHANGE THIS LINE
这3个警报将显示语句执行的顺序。
这个问题有很多解决方案,所有这些解决方案都在上面the question posted by @Andreas的公认答案中列出。