总是得到javascript函数的未定义返回

时间:2015-07-29 15:00:54

标签: javascript jquery ajax

我有这段代码(问题是我无法从结果文件中获取返回值):

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

您能否建议进行任何修改以获得返回值?提前谢谢你。

1 个答案:

答案 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的公认答案中列出。