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 ツールチップにクリック イベントを追加する詳細な説明

推薦する

src 属性と href 属性の違い

src と href には違いがあり、混同される可能性があります。 src は現在の要素を置き換える...

最初のReactページを作成する方法

目次Rractとは何ですか?背景React スキャフォールディングJSXとは何かRractとは何です...

Vue はチャット ボックスで絵文字を送信する機能を実装します

vueチャットボックスで絵文字を送信し、vueインターフェースで絵文字を送信するための具体的なコード...

CentOS 8 システム FTP サーバーのインストールとパッシブ モードの設定の詳細なチュートリアル

目次1. 基本を理解する2. システム環境を確認する3. ftpコマンドをインストールする[オプショ...

dockerでlnmp環境を構築する方法

プロジェクトディレクトリを作成する php ディレクトリをコピーする次のプロジェクト構造を作成します...

jsはショッピングサイトの虫眼鏡機能を実現します

この記事では、ショッピングサイトの虫眼鏡機能を実現するためのjsの具体的なコードを紹介します。具体的...

CentOS に Memcached と PHP Memcached 拡張機能をインストールする

高性能分散メモリオブジェクトキャッシュシステムMemcachedについては、別の記事「Windows...

VMware 仮想マシンのインストール Apple Mac OS の超詳細なチュートリアル

目次要約する仕事の都合で Apple の Mac OS に対応するソフトウェアをインストールする必要...

HTML+CSS+jQuery はスクリーンショットで検索ホットリストタブ効果を模倣します

コードをコピーコードは次のとおりです。 <!DOCTYPE html PUBLIC "...

Ubuntu 19 以下に Android Studio をインストールするチュートリアル

過去の経験から言うと、タスクを完了した後にメモを取るのは良い習慣です。インストール環境はUbuntu...

Web プロジェクト開発 VUE の混合と継承の原則

目次ミキシンMixin ノート (重複名)ローカルミックスイングローバル ミックスイン定義とグローバ...

JavaScript フロントエンドのタイムアウト非同期操作に最適なソリューション

目次コードの実行に長い時間がかかる場合はどうなりますか? Axiosにはタイムアウト処理機能が搭載さ...

MYSQL ローカルインストールと問題解決

序文この記事はかなり詳細で、少し面倒です。他のチュートリアル ドキュメントでは多くの手順が省略されて...

MySQLユーザー権限管理の詳細な説明

目次序文: 1. ユーザー権利の概要2. 実際の権限管理序文:データベースのユーザー権限管理について...

IntelliJ IDEA で Java を使用して MySQL データベースに接続する方法の詳細な説明

1. MySQLデータベースをダウンロードし、インストールして設定するダウンロードアドレス: htt...