显示快速连续 AJAX 调用的结果
Displaying results with quick consecutive AJAX calls
为了更好地可视化它,我有一个用于酒店管理应用程序的PHP脚本,可以显示日历(表格列:每月的天数/行:每天的价格(。
我可以在编辑模式下访问此脚本,该脚本在每个.
当我更改字段的值时,ajaxcall 会执行后台作业并将更新的值返回到字段(以确认数据库中的新值已更新(。
当我缓慢更改值(每个字段超过 1 秒(时,它运行良好。但是当我尝试加快速度(编辑值、TAB 到下一个字段、更改值等(时,ajaxcall 会更新数据库,但它无法更新回字段。
关于为什么会发生这种情况的任何想法?以及如何解决它?我已经在所有浏览器中尝试过。
网页部分:
<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)
}
}
我认为你应该重新考虑整体算法。
据我了解,您正在尝试创建一个允许同时修改数据的 Web 应用程序(在本例中为日历条目(。
这可以通过用于并发编辑文本文档的算法(例如Google Docs(来解决 - 但这可能有点矫枉过正。
我建议使用本地锁定的方法:
一旦用户单击该元素,AJAX 调用就会要求服务器提供"租约"以修改该元素。服务器将响应一条消息,告诉客户端它当前已锁定(>用户无法修改它(或告诉客户端现在允许修改其内容 - 所有其他客户端现在在尝试修改它时都会收到锁定的消息。
然后在客户端上,您可以编写任何您想要的内容(直到超时(。
再次离开该元素后,客户端会向服务器发送一条消息,其中包含新内容及其现在再次解锁的信息。
如果您还需要在其他客户端上实时更新,您可以通过计时器发送当前内容。
相关文章:
- 如何在chrome扩展中存储数据/结果,以及如何使用setTimeout使其只被调用一次
- 我们如何在jQuery Datatable调用结果中启动另一个jQuery插件,而不是页面就绪函数
- 当用户移动到其他页面时,如何显示AJAX调用结果
- JSON对变量的调用结果
- 咖啡脚本化的 ajax 调用结果在实际成功时失败回调
- 使用Rally SDK 1.33创建一个包含两个findall调用结果的表
- 随机分配Dribble API调用结果
- 存储函数调用结果以供以后参考
- 从ajax调用结果更新qtip内容
- Jquery加载调用结果为空查询字符串
- 导出异步函数调用结果的变量
- 在引导模式中显示ajax调用结果
- 如何在表单提交后停止重定向到API调用结果
- 如何防止JQuery的默认动作在Ajax调用结果条件
- 在node.js中迭代大量的异步调用/结果(使用ES6 / async / bluebird / generators)
- 想要显示我调用过程的调用结果
- jQuery 管理多 Ajax 调用结果
- IE 不显示数据库中的 ajax 调用结果
- Meteor Wrapasync服务器端保存api调用结果到集合
- Node.js:在网站中显示图像作为REST API调用结果