HTML での非同期ファイルアップロードの例

HTML での非同期ファイルアップロードの例

コードをコピー
コードは次のとおりです。

<form action="/hehe" method="post">
<input type="text" value="hehe"/>
<input type="submit" value="アップロード" id="アップロード"/>
</フォーム>


コードをコピー
コードは次のとおりです。

これは HTML で最も一般的でシンプルなフォーム送信方法ですが、この方法ではページを切り替える必要があります。同じページでサーバーとやり取りしたい場合があり、フォーム送信後に別のページに切り替えたくない場合があります。どうすればよいでしょうか? フォームを送信するには、いくつかの方法があります。
まず、迂回することで国を救う解決策を紹介します。上記のコードスニペットを変更する必要はありません。次のコードを追加するだけです。


コードをコピー
コードは次のとおりです。

<iframe id="uploadFrame" name="uploadFrame"></iframe>

そして、target=uploadFrame という形式で target 属性を追加します。target 属性は、iframe の id の値 (または name 属性の値。試してみるとわかります) と一致している必要があります。

簡単に説明すると、フォームは送信後に更新されますが、ページジャンプがないのはなぜでしょうか。それはiframeのせいです。実際にはiframe内で更新しましたが、iframeは空で、更新されていないのと同じです。非同期感があります。これはオーソドックスな方法ではありませんが、国を救うための回りくどい方法です。もちろん、この方法は多くの場合には適用できません。たとえば、フォームを送信した後、サーバーから何かを取得したいと考えています。この方法は明らかに実現可能ではありません。ここでも、真に非同期の送信フォームが必要です。

(II) jQuery非同期フォーム送信

ここでは、比較的簡単に使用できる jQuery フォーム送信プラグイン ajaxupload を紹介します。

コードをコピー
コードは次のとおりです。

<本文>
<form action="/hehe" method="post">
<input type="text" value="hehe"/>
<input type="button" value="アップロード" id="アップロード"/>
<!--<input type="button" value="send" onclick="send()"/>-->
</フォーム>
<スクリプト>
(関数(){
新しいAjaxUpload("#upload", {
アクション: '/hehe',
タイプ:"投稿",
データ: {}、
名前: 'テキストフィールド',
onSubmit: 関数(ファイル、ext) {
alert("アップロードに成功しました");
},
onComplete: 関数(ファイル、レスポンス) {
}
});
})();
</スクリプト>
</本文>

メインコードはここに掲載されています。ページのレンダリングが完了したら、自己実行関数を使用して、idがuploadのボタンに非同期アップロードイベントを追加します。new AjaxUpload(id, object)のidは、バインドされたオブジェクトのidに対応します。2番目のパラメータについては、dataは追加データ、nameは任意、onSubmit関数はファイルをアップロードする前のコールバック関数、最初のパラメータfileはファイル名、extはファイルサフィックス、onComplete関数はサーバーから返されたデータを処理できます。上記は、2 つの単純なファイルアップロード クライアントの実装です。

<<:  MySQL のスケジュールされた完全なデータベースバックアップ

>>:  Vue の echarts ツールチップにクリック イベントを追加する詳細な説明

推薦する

HTML におけるいくつかの特殊属性タグの使用法の紹介

以下の属性はブラウザとの互換性があまりありません。 1.transform:rotate(45度) ...

Docker のインストールと構成コマンドのコード例

Dockerのインストール依存パッケージをインストールする sudo yum install -y ...

CSS (カスケーディング スタイル シート) の一般的な用語の概要

CSS を使用する場合は、DOCTYPE (ドキュメント タイプ定義) を記述することを忘れないでく...

Vueナンバープレート検索コンポーネントの使い方の詳しい説明

参考までに、シンプルなナンバープレート入力コンポーネント(vue)です。具体的な内容は次のとおりです...

MySQL統計データテーブルの設計方法

目次リアルタイム更新は必要ですか?マテリアライズド ビュー ツール (Flexviews)カウントテ...

初心者向けWebサイト構築ガイド⑥:FlashFXPの詳しい使い方

今日は、サイトの設定やウェブサイトのアップロードなど、FlashFXP の最も基本的な機能を紹介しま...

JavaScript BOM ロケーション オブジェクト + ナビゲーター オブジェクト + 履歴オブジェクト

目次1. 場所オブジェクト1. URL 2. 場所オブジェクトのプロパティ3. ロケーションオブジェ...

CSS の一部のプロパティの前には「*」または「_」が付きます。

CSS の一部のプロパティの前には「*」または「_」が付きます。さまざまなブラウザを識別する例えば...

Vueでaxiosを簡単にカプセル化する方法

Vueにaxiosを挿入する 'axios' から axios をインポートします。...

mysqldump を使用して MySQL データをバックアップする方法

1. mysqldump の紹介mysqldump は、MySQL に付属する論理バックアップ ツー...

Vueカスタムツリーコントロールの使い方の詳細な説明

この記事では、Vueカスタムツリーコントロールの使い方を参考までに紹介します。具体的な内容は次のとお...

MYSQLテーブルの包括的な概要

目次1. テーブルを作成する1.1. テーブルを作成するための基本構文1.1.1. シンプルなテーブ...

CSS 向け SASS スタイル プログラミング ガイド

SASS を使用する開発者が増えるにつれて、SASS コードの数に注意する必要があります。 SASS...

Dockerfile を使用して nginx イメージを構築する例

Dockerfile の紹介Docker は、Dockerfile の内容を読み取ってイメージを自動...

MySQL の最初のインストールが成功した後にパスワードを初期化する手順

ファイルをディレクトリに解凍しますこれは解凍後のディレクトリですmy.iniファイルを入力しますダブ...