首页 > 解决方案 > Ajax 响应看起来未定义

问题描述

我正在尝试获取 ajax 响应并将其归因于一个变量(比如说 _has_weekend_hollidays),如下所示:


JS 调用:

_has_weekend_hollidays = checkWeekendHollidays( _i );
console.log ( checkWeekendHollidays( _i ) );

AJAX 调用

$.ajax({
    url: "./directory/ajax_check_weekend_hollidays.php",
    type: "POST",
    data: { 
            start_date: _date1,
            final_date: _date2 
          }
}).done(function (_result) {
    return ( _first_weekday == 0 || _last_weekday_id >= 6 || _result!="0" );
}).fail(function (_result) {
    console.log("ERROR:" + _resultado);
});

AJAX _result 正常,但返回不起作用。

所以 console.log 显示undefined

有任何想法吗?

提前致谢!

标签: javascriptajax

解决方案


如果您需要结果继续,请在 Ajax 回调之后执行您的工作。

这是undefined因为 Ajax 没有返回变量:

{
    url: "./directory/ajax_check_weekend_hollidays.php",
    type: "POST",
    data: { 
            start_date: _date1,
            final_date: _date2 
          }
}

这一行:

return ( _first_weekday == 0 || _last_weekday_id >= 6 || _result!="0" );

在 Ajax “完成”之前不会执行。

如果您希望记录返回数据,请在返回函数中使用 console.log。

例子:

$.ajax({
    url: "./directory/ajax_check_weekend_hollidays.php",
    type: "POST",
    data: { 
            start_date: _date1,
            final_date: _date2 
          }
}).done(function (_result) {
    console.log(_first_weekday == 0 || _last_weekday_id >= 6 || _result!="0");
    //do something else here too
}).fail(function (_result) {
    console.log("ERROR:" + _resultado);
});

推荐阅读