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();

私が知っているすべてのことから、送信する必要があります。その後、イベントハンドラーが起動してリダイレクトを停止します。ただし、サーバーが500 Internal Server Errorなどの200ステータス以外のものを提供する場合でも、リダイレクトを取得します。

したがって、1)エラーとそのステータスコードを検出するにはどうすればよいですか?2)結果がエラーの場合でも、リダイレクトを防ぐにはどうすればよいですか?

4

1 に答える 1

0

単純なsubmit()だけでは、これは有望に見えません。

しかし、あなたはそれを行うことができます。フォームを直接送信するのではなく、フォームから作成されたFormDataでXHRの.send()を使用するだけです。.submit()とは異なり、.send()はdocument.locationをリダイレクトに従わせません。代わりに、document.locationに触れることなく、XHRコールバックに渡された引数のGETのリダイレクトに従います。

FormDataを作成するためのコード例については、アップロードする前に、クロム拡張機能を備えたGrabファイルに対するRobWの回答を参照してください。

クロスドメイン.send()については、質問の下半分を参照してください。非同期のクロスドメインファイルのアップロードを実行することは可能ですか?

于 2012-08-17T11:01:30.640 に答える