$ .post后跟form.submit似乎取消$ .post

时间:2011-09-28 23:43:42

标签: javascript jquery

在其上有多个表单的Web应用程序上,如果您单击移动到另一个页面的选项,我们会通过调用$.post(window.location.pathname, options, saveReturn, 'json');保存所有未保存的内容,然后通过设置一些参数并调用{来转到新页面{1}}。这通常可以正常工作,但是在我们客户的生产服务器上(当然不是他们的测试服务器),form.submit();的操作似乎没有发生 - 应该保存到数据库中的东西不是'得救了。我有一个客户技术支持人员来运行一个firebug会话,由$.post命令触发的POST显示为红色,并且没有“Response”标题。

我们在POST完成之前离开页面会导致某种竞争条件吗?有没有办法等待POST完成,而不是让$.post函数负责saveReturn?我不想将此功能添加到form.submit(),因为如果他们使用“保存”按钮手动保存其工作,则会完成相同的saveReturn调用。

2 个答案:

答案 0 :(得分:1)

那是因为你在离开页面时正在终止连接。您应该在$.post的回调中提交表单。

$.post(window.location.pathname, options, function(data){
    saveReturn(data);
    form.submit();
}, 'json');

答案 1 :(得分:1)

你的直觉似乎是正确的。如果您想将saveReturnform.submit“更多”分开,则可以将form.submit附加到请求的complete事件中:

$.post(window.location.pathname, options).
    success(saveReturn).
    complete(function(){
        form.submit();
    });

这很好,因为它清楚地区分了这两个动作(当然假设你想要;这似乎是你想要的问题)。