0

我有一个 jQuery UI 日期选择器。我想向该函数发送数据。我使用.post函数通过 PHP 文件从数据库中获取数据作为“数据”。我无法访问数据,因为数据返回到 .post 函数内部。我想要它到外部变量dat,以便我可以使用它。实际上数据是要禁用的日期。

我的代码:

$(function () {
    var dat = "";
    var unavailableDates = ["10-5-2013", "14-5-2011", "15-5-2011"];
    var dt = "id=1";
    $.post("fetch.php", dt, function (data) {});
    dat = data;

    function enableFirday(date) {
        dmy = date.getDate() + "-" + (date.getMonth() + 1) + "-" + date.getFullYear();
        var day = date.getDay();
        return [((day == 6 || day == 5 || day == 3) && $.inArray(dmy, unavailableDates) < 0), ''];
    }
    $("#d").datepicker({
        beforeShowDay: enableFirday
    });
});

在函数内部,第 3 行有一个变量unavailableDates。我想从我的数据库中获取一些日期并保存在该变量中。

我以为我可以用来.post从数据库中获取数据以便我可以使用。但是数据是从 PHP 文件返回的,而不是复制到变量dat中。从 PHP 文件返回的内容可以在 .post 函数内部使用,但不能在外部使用。如何将数据获取到.post函数之外。请帮助我。在我的项目中获取数据是非常有必要的。

4

1 回答 1

1

AJAX 调用(你的$.post())ASYNCHRONOUS。您的 JS 代码将运行 .post() 函数,然后立即继续。除非您有一个非常快的网络链接,否则几乎不可能从 AJAX 调用返回响应并填充data变量。

这就是为什么 AJAX 调用带有一个回调处理程序,当响应来自服务器时,JS 会调用它,所以你的代码应该是

var dat;
$.post(url, dt, function(data) {
    dat = data;
    enableFirday(); // or whatever your code should do once you get a response.
});
于 2013-04-18T20:19:04.160 回答