2013-04-18 91 views
0

我有一個jQuery UI日期選擇器。我想發送數據到該功能。我使用.post函數通過PHP文件從數據庫中獲取數據作爲「數據」。我無法訪問數據作爲返回到.post函數內的數據。我希望它能支持變量dat,以便我可以使用它。其實數據是要禁用的日期。如何通過php到javascript變量從數據庫獲取數據?

我的代碼:

$(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 
    }); 
}); 

功能裏面有在第三行的變量unavailableDates。我想從我的數據庫中獲取一些日期並保存在該變量中。

我想我可以使用.post從數據庫中提取數據,以便我可以使用。但是數據是從PHP文件返回的,而不是複製到變量dat。 PHP文件返回的內容可以在.post函數中使用,但不能在外面使用。我怎樣才能獲得數據到.post函數之外。請幫助我。在我的項目中獲取數據是非常必要的。

+0

您可以使用一個隱藏的輸入字段中的值存儲數據庫在那。使用'getElementbyId'將數據提取到'javascript'變量。 –

+1

只要你知道,像'function(data){}這樣的回調存根就可以只將data變量作用於你爲該函數定義的那個空白塊,所以下面的'dat = data'賦值將總是評估到'dat = undefined',除非你在全球設置了'data'(這仍然不是一件好事)。 @ MarcB的回答說最好的問題的根源,我只是想指出。 –

回答

1

AJAX調用(您的$.post())異步。您的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. 
}); 
相關問題