这里有另一个问题。我正在使用dhtmlx调度程序,特别是onBeforeLightbox事件。此事件将返回true以显示灯箱,否则返回false。我正在尝试根据特定条件设置是否显示灯箱的参数。但是,我坚持使用ajax请求作为局部变量的响应,并且超出了onBeforeLightbox事件中的范围。主要是我一直在提到几篇文章: question 14220321和question 5316697。我已经尝试过使用promises和callbacks,但无论哪种方式,我仍然在成功,完成或回调函数中使用局部变量。到目前为止,唯一有效的方法是将异步设置为false。我知道,我知道,这很糟糕。这是我正在处理的代码:
scheduler.attachEvent("onBeforeLightbox", function(event_id) {
resp=null;
var ev = scheduler.getEvent(event_id);
ev.wono = orderNo;
var id = event_id;
var sdate = scheduler.getEvent(event_id).start_date;
var edate = scheduler.getEvent(event_id).end_date;
var xhr = new XMLHttpRequest();
var url = "../php/valAppts.php";
xhr.open("POST", url, false);
xhr.setRequestHeader("X-INDEX", orderNo);
xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");
xhr.onreadystatechange = function() {
if (xhr.readyState == 4 && xhr.status == 200) {
resp = xhr.responseText;
}
}
xhr.send();
return resp;
});
valApps.php返回true或false,具体取决于sql查询的结果。如何在onBeforeLightbox事件范围内获取xhr.responseText而不必将async设置为false?我想这个解决方案在我看来更加简单。杜!
答案 0 :(得分:0)
在请求完成之前返回了resp。您必须从if语句返回Story
,如下所示。
TypeError