0

我正在使用http://musicbrainz.org/release/72cf3c87-d97d-49cc-8781-661ad3580091/cover-art-uploader?id=17477511090 之类的页面。这通常是 iframe 的来源,但我在 iframe 之外的用户脚本中使用它。我一直在测试使用 javascript 在该页面上提交表单,但我不希望在提交后重定向。

这是我从控制台运行的 js:

jQuery(document.forms[0]).submit(function (e) {
    e.preventDefault();
    alert('foo');
    return false;
})[0].submit();

据我所知,它应该提交,然后事件处理程序启动以停止重定向。但是,当服务器提供除 200 以外的任何状态时,例如 500 Internal Server Error,我仍然会得到重定向。

所以 1)如何检测错误及其状态代码,以及 2)如何防止重定向,即使结果是错误的?

4

1 回答 1

0

仅使用简单的 submit(),这看起来并不乐观。

但是,你可以做到。只需在从表单创建的 FormData 上使用 XHR 的 .send(),而不是尝试直接提交表单。与 .submit() 不同,.send() 不会导致 document.location 跟随重定向。相反,它只会跟随 GET 中的重定向,将参数传递给 XHR 回调,而不触及 document.location。

有关创建 FormData 的示例代码,请参阅 Rob W 对Grab file with chrome extension before upload的回答。

对于跨域 .send(),请参阅问题的下半部分是否可以执行异步跨域文件上传?.

于 2012-08-17T11:01:30.640 回答