Javascript表单提交有时无效

时间:2013-09-20 13:19:39

标签: javascript forms

我在beforeunload javascript活动期间提交了我的表单。 对于所有浏览器,它的行为方式不同。 在chrome 29中,如果我在1分钟内关闭浏览器,那么它就是服务器端操作,但是如果我的应用程序闲置超过1分钟然后我关闭了我的浏览器,那么它就不会打到服务器了。同样在IE10和FF20中,我不能闲置超过5分钟。

<script> 
    function updateServerCMIModel(item) {
        document.forms[0].itemID.value = item;
        formstring = top.window.CPFrame.showCurrentModelState("form");
        document.forms[0].data.value = formstring;
        document.forms[0].nextAction.value = top.window.frames.CPFrame.CPAPI.userEvent;
        document.forms[0].lmsAction.value = "update";
        document.forms[0].submit();
    }
</script>

有什么方法可以解决这个问题吗?

2 个答案:

答案 0 :(得分:0)

这是一个时间问题。您需要一种方法来延迟实际卸载页面,直到表单发布成功。一个非常典型的黑客是在发布表单后向用户发出一个对话框(“你确定要离开这个页面吗?”)并希望用户在点击前花几秒钟。

为此,只需从事件处理程序返回包含您选择的消息的字符串,例如

window.onbeforeunload = function(e) {
  doFormPost();
  return 'Dialog text here.';
};

答案 1 :(得分:0)

现在问题已解决。我通过同步AJAX调用实现了它。