JavaScript:是否可以从'form.submit()'处理服务器错误?

JavaScript:是否可以从'form.submit()'处理服务器错误?,javascript,jquery,forms,Javascript,Jquery,Forms,我通常使用Ajax来提交表单,但有一种情况是不可能的。此特定表单必须触发从服务器下载文件,并且浏览器必须生成“另存为”对话框。我必须以旧的方式(我认为)完成这项工作,使用返回附件的表单提交 为此,我使用JavaScript创建了一个表单: var form = document.createElement("form"); form.setAttribute("method", "post"); form.setAttribute("action", "/cgi-bin/myp

我通常使用Ajax来提交表单,但有一种情况是不可能的。此特定表单必须触发从服务器下载文件,并且浏览器必须生成“另存为”对话框。我必须以旧的方式(我认为)完成这项工作,使用返回附件的表单提交

为此,我使用JavaScript创建了一个表单:

   var form = document.createElement("form");
   form.setAttribute("method", "post");
   form.setAttribute("action", "/cgi-bin/myprog");
   ...create and append lots of input elements, and then
   form.submit();
这可以正常工作,直到服务器必须返回错误为止。例如,如果服务器返回
403禁止
,那么浏览器只会显示一个空白页面,并尝试重定向到
/cgi-bin/myprog


是否有任何方法可以使用
submit()
处理错误?似乎只有
用户代理应该提供来自HTTP“get”和“post”事务的响应
。HTMLFormElement没有说明任何错误。我控制服务器,并且可以更改响应,因此我可能会返回
200ok
,并显示错误消息,但必须有更好的方法

基本上,这是不可能的,因此您必须提前检查下载是否成功。在我的情况下,我只需要检查用户是否有权访问该文件


我通过向服务器发送一个单独的Ajax请求来处理这个问题,如果用户得到授权,服务器将返回success(
200
),否则返回failure(
403
,或其他)。如果返回success(即
textStatus
参数到
。总是
success
),那么我按照上面的方式构造并提交表单。

那么-你到底不喜欢这个问题的什么地方?我正面临着同样的问题,你找到解决方案了吗?@RG:无法完成,所以你必须解决它。取决于可能导致故障的原因。在我的情况下,我只需要检查授权,因此我使用下面答案中的两步程序。我对它没有任何问题。谢谢,不幸的是,这对我的情况没有帮助-用户下载服务器动态创建的文件-这个文件可能很大,在这个过程中可能会出现一些问题。我唯一能想到的就是第二个(AJAX)请求来监视下载过程/结果。