我正在寻找从mysql数据库加载一组数据并在jquery编写的日历函数中使用它,但是我在使用$ .post函数之外的检索数据时遇到了麻烦。 现在,我已经对函数中的数据进行了硬编码,这很好用,看起来(简化,我当然需要的不仅仅是提醒数据),如下所示:
onRender: function(date) {
var redArray = ['2011815','2011820','2011824','2011825'];
alert(redArray);
}
现在我想从我的数据库中检索这些数字,例如:
onRender: function(date) {
$.post("../actions/calendar.php", {datetype: "1"}, function(data){
if(data.length >0) {
redArray = data;
}
},"json");
alert(redArray);
}
但是警报没有给出任何内容,或者未定义。我如何使用我从php文件中获得的内容,在$ .post-thing之外?我以后需要变量,我不能留在$ .post函数中!
答案 0 :(得分:0)
$ .post是异步的
onRender: function(date) {
$.post("../actions/calendar.php", {datetype: "1"}, function(data){
if(data.length >0) {
redArrayReady(data);
}
},"json");
}
function redArrayIsReady(redArray) {
// work with array
redArray.length > 0 === true; // true
}
因此您需要等待从服务器返回数据。
答案 1 :(得分:0)
问题是Ajax回调(POST)是异步的。 POST被激发到服务器,您的代码会立即继续到下一行(警报)。所以它会在响应从服务器返回之前到达那里。
解决此问题的方法是将响应的处理放在回调中。 e.g。
onRender: function(date) {
$.post("../actions/calendar.php", {datetype: "1"}, function(data){
if(data.length >0) {
redArray = data;
alert(redArray);
}
},"json");
}