在这里打结,还有另一个问题。我正在使用 dhtmlx 调度程序,特别是 onBeforeLightbox 事件。此事件将返回 true 以显示灯箱,否则返回 false。我正在尝试根据某些条件设置是否显示灯箱的参数。但是,我坚持认为来自 ajax 请求的响应是一个局部变量,并且超出了 onBeforeLightbox 事件的范围。主要是我参考了几篇文章: 问题 14220321和问题 5316697. 我尝试过使用 Promise 和回调,但无论哪种方式,我仍然卡在成功、完成或回调函数中的局部变量。到目前为止,唯一有效的是将 async 设置为 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 根据 sql 查询的结果返回 true 或 false。如何在 onBeforeLightbox 事件范围内获取 xhr.responseText 而无需将 async 设置为 false?我想这个解决方案比此刻在我看来要简单得多。呃!