ファイルをアップロードするために提供されている場合、私はサービスをbitsontherunするために、フォームのアクションURLを変更しようとしています:なぜフォームがまだ私はfalseを返すてるにもかかわらず、提出された(私は変更フォームのアクションのattr)
オリジナルをHTML:
<form accept-charset="UTF-8" action="/clients/belsobeer/videos" class="new_video" id="new_video" method="post">
<label>Select video</label>
<input id="uploadFile" type="file" name="file">
<small id="uploadText">Videos can be... Up to 1 GB in size, Up to 5 minutes in length, A wide variety of formats (WMV, AVI, MP4, MOV, FLV, ...)</small>
<div class="actions">
<input id="video_submit" name="commit" type="submit" value="Create Video">
</div>
</form>
JS(実行時にビットへのフォームアクションを変更):
$("#new_video").submit(function(){
if ($("#uploadFile").val() != '') {
alert('before change');
$("#new_video").attr("action") = 'http://upload.bitsontherun.com/v1/videos/upload?api_format=json&key=Azfd6JNl&token=919fddfe5c7e083893735e1043ca9d3f659f11467a69412';
alert('after change');
return false;
}
});
私は「変更前」のアラートボックスが表示されますが、その後、フォームは、元のアクションに提出されますと私は決してない2番目の警告を「変更後」にします。何故ですか?
.preventDefaultを使用することはできますが、フォームアクションを変更してからmultipartを追加して他の入力の名前を変更しても、実際には新しい値でフォームを送信する必要があります。
これを上の扱い方が良いでしょうバックエンド。通常どおりフォームを送信し、ファイルアップロードが含まれている場合は、POSTを送信します(またはAPIを提供する場合はAPIを使用することをお勧めします)。こうすることで、ユーザーはフォームを送信した後、サードパーティのサイトに送信されるのではなく、サイトに残り、プロセスが流動的になります。 –
@ChrisPratt、フォームがいつものように提出されると、私のサーバーへのファイルのアップロードは自動的に開始されませんか?これらはアップロードされている大きな動画ですが、私のサーバーからbotrサーバーへの別のhttp投稿を再作成するのではなく、動画のアップロードを直接ユーザーのブラウザとBitontherunの間に行うことになります。ただし、ファイルをクライアントのブラウザからbotrにアップロードするサーバーサイドの投稿を再作成する方法はありません(最初にファイルを自分のサーバーにアップロードする必要はありません)。 – Homan