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/CSS の基礎 - HTML コード記述におけるいくつかの注意事項 (必読)

この記事の警告事項は、ブラウザの互換性とはまったく関係ありません。主に、プロジェクトで遭遇したいくつ...

Dockerコンテナでユーザーを切り替えるときに権限が不足する問題を解決する方法

Docker コンテナでユーザーを切り替えると、権限が不十分であるというメッセージが表示されます。解...

Vueはドラッグプログレスバーを実装します

この記事では、ドラッグプログレスバーを実現するためのVueの具体的なコードを例として紹介します。具体...

Linuxの運用と保守の基本プロセス管理と環境構成分析

目次1. プロセスの基本的な概要2. プロセスの構成要素3. プロセス環境4. プロセスステータス5...

MySQL 8.0 の新機能の分析 - トランザクション データ ディクショナリとアトミック DDL

序文トランザクション データ ディクショナリとアトミック DDL は、MySQL 8.0 で導入され...

MySql8.0.19 インストールピットレコードを共有する

前回の記事ではMySql8.0.19のインストール手順を紹介しました。必要な方はクリックしてご覧くだ...

MySQL 5.7.17 インストール グラフィック チュートリアル (Windows)

最近データベースを学び始めたのですが、とても興味深いコースだと感じていますが、含まれる内容の多くは私...

MySQL フルテキスト インデックス、ジョイント インデックス、Like クエリ、JSON クエリのうち、どれが高速ですか?

目次クエリの背景1. クエリをいいね2. JSON関数クエリ3. 共同インデックスクエリ4. 全文イ...

React Nativeでシンプルなゲームエンジンを作る

目次導入始めるReact Nativeゲームエンジンの簡単な紹介React Nativeでスネークゲ...

Navicat for SQLite で中国語データを CSV にインポートする方法

この記事では、参考までに、csv中国語データをNavicat for SQLiteにインポートする具...

html の img src="" で js 関数または js 変数を呼び出して、画像パスを動的に指定します。

この問題に関して、オンライン リソースをたくさん見つけました。ここにいくつかの方法を示します。コード...

MySQLクエリステートメント内のユーザー変数のコード分析

前回の記事では、MySQL 最適化の概要 - クエリの合計数を紹介しました。この記事では、クエリ ス...

mysqlのデータディレクトリ内のファイルを直接コピーしてデータを復元する実装

mysqlはデータディレクトリ内のファイルをコピーしてデータを復元します背景: MySQL がクラッ...

2つのVirtualBox仮想ネットワークをブリッジするLinuxブリッジメソッドの手順

この記事は、この時期の「ピーターから奪ってポールに払う」という仕事のスタイルに対する私の不満から生ま...

カルーセル効果を実現するネイティブJavaScript

この記事では、カルーセルの効果を実現するためのJavaScriptの具体的なコードを参考までに共有し...