为了更好地可视化它,我有一个用于显示日历的酒店管理应用程序的 PHP 脚本(表格列:每月的天数/行:每天的价格)。
我可以在编辑模式下访问这个脚本,它会在每个 .
当我更改字段的值时,ajaxcall 会执行后台作业并将更新的值返回给字段(以确认数据库中的新值已更新)。
当我缓慢更改值(每个字段超过 1 秒)时,它可以完美运行。但是当我尝试加快速度时(编辑值、TAB 到下一个字段、更改值等等),ajaxcall 会更新数据库,但无法更新回该字段。
关于为什么会发生这种情况的任何想法?以及如何解决?我在所有浏览器中都试过了。
HTML部分:
<td>
<input type='text' id='$counter' onChange='updateAvailability(this,$idroomclass,\"$date\",$counter)'
value='$total' />
</td>
Javascript:
function ajaxRequest() {
try {
var request = new XMLHttpRequest()
} catch (e1) {
try {
request = new ActiveXObject("Msxml2.XMLHTTP")
} catch (e2) {
try {
request = new ActiveXObject("Microsoft.XMLHTTP")
} catch (e3) {
request = false
}
}
}
return request
}
function updateAvailability(vagos, idroomclass, date, input_id) {
if (vagos.value != "") {
params = "vagos=" + vagos.value + "&idroomclass=" + idroomclass + "&date=" + date
request = new ajaxRequest()
request.open("POST", "ajaxcalls/updateAvailability.php", true)
request.setRequestHeader("Content-type", "application/x-www-form-urlencoded")
request.setRequestHeader("Content-length", params.length)
request.setRequestHeader("Connection", "close")
request.onreadystatechange = function () {
if (this.readyState == 4) {
if (this.status == 200) {
document.getElementById(input_id).value = request.responseText;
} else alert("Ajax error: " + this.statusText)
}
}
request.send(params)
}
}