如何从数据库通过php获取数据到javascript变量?

时间:2013-04-18 20:16:00

标签: php javascript ajax jquery

我有一个jQuery UI datepicker。我想将数据发送到该函数。我使用.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函数之外。请帮帮我。在我的项目中获取数据是非常必要的。

1 个答案:

答案 0 :(得分: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.
});