当我使用 Charles 代理查看日志时,我发现用户的提交 (POST) 并不总是包含所有表单数据。有时它会丢失表单数据的底部三分之一,显然是在 AJAX 调用PeriodicalExecuter
发生故障时。我对此并不完全确定。以下是页面脚本的大致外观:
document.observe("dom:loaded", function() {
...
new PeriodicalExecuter(function(pe) {msgEntryRqst(host_URL, web_sid, pageType, recordNbr);}, delaySecs);
...
}
function msgEntryRqst(host_URL, web_sid, pageType, recordNbr) {
...
new Ajax.Request('/'+host_URL, {
method: 'get',
parameters: {c: 'AJAX_request', ajtype: 'instantMessage', sid: web_sid, pagetype: pageType, record: recordNbr, rnd: Math.random()},
onSuccess: function(response) {
if(response.responseText.length>0) {
...
}
}
}
}
有没有办法,例如,DOCUMENT.observe('click', 'myHandler')
可能在该"dom:loaded"
部分中,在用户单击保存按钮或导航选项卡时设置一个标志,跳过 AJAX 命令的一个周期,从而不截断用户的 POST?