ajaxfileupload.js を使用して Ajax アップロード ファイル php version_jquery を実装する
PHP とその他のサーバーサイド スクリプトの両方がファイル アップロード機能を提供しており、実装は比較的簡単です。 JavaScriptと連携してAjaxファイルアップロードを実装できます。 jQuery 自体にはこのような簡略化された機能はありませんが、それを実現できるプラグインは数多くあります。その中でもPhpletter.comが提供するajaxfileupload.jsは軽量なプラグインであり、その記述方法はjQueryが提供するグローバルメソッド$.post()に非常に似ており、シンプルで使いやすいです。
ただし、プラグインは単純すぎるため、アップロードするファイルのパスを提供するだけでなく、バックエンド サーバーに追加の値を渡すこともできません。そこで、スクリプトを変更してデータ オブジェクト パラメーターを追加しました。
1. 原則
ここではサーバー スクリプトとして PHP を使用しています。ほとんどすべての PHP を使用しない書籍には、move_uploaded_file() メソッドを使用してファイルをアップロードする方法が記載されているため、ここでは詳しく説明しません。私が言いたいのは、Ajax アップロードの原則を使用してくださいということです。
私は jQuery ライブラリを使用しているため、Ajax について考えるとき、私の最初の反応は $.post() メソッドを試し、各セレクターを使用してファイル ファイル ボックス内の値を取得し、それをバックグラウンド サーバーに送信することです。 。もちろん、これはうまくいかないことが後でわかりました。 (この問題のため、私も多くの情報を確認しましたが、オンラインで入手可能な ASP やその他のスクリプトが多数あります。本当に何を言えばよいのかわかりません。)
話を戻しますが、Ajax アップロードの実装は難しくなく、さまざまな方法があります。この記事で説明されている Phpletter.com の ajaxfileupload.js プラグインは iframe を使用します。これは、JavaScript スクリプトを使用しない場合に、ページを更新せずにアップロードを実現する一般的な方法でもあります。 (このブログはbo-blogのバックグラウンドでログを書くためにこの方法を使っています)
ajaxfileupload.js プラグインも非常に単純です。最初に jQuery のセレクターを使用してファイル アップロード ボックス内のファイル パス値を取得し、次に iframe を動的に作成し、その中に新しいファイル ボックスを作成して、送信するポスト メソッドを提供します。バックステージへ。最後に結果をフロントへご返却ください。
2.
を使用します。ajaxfileupload.js プラグインの使用は非常に簡単です。
フロントエンドの HTML コードは次のようになります:
<script type="text/javascript"> $(#buttonUplod).click(function () { $.ajaxFileUpload ({ url:'doajaxfileupload.php', //你处理上传文件的服务端 secureuri:false, //与页面处理代码中file相对应的ID值 fileElementId:'img', dataType: 'json', //返回数据类型:text,xml,json,html,scritp,jsonp五种 success: function (data) { alert(data.file_infor); } }) }); </script> <input id="img" type="file" size="45" name="img" > <button id="buttonUpload" onclick="return ajaxFileUpload();">Upload</button>
バックエンド doajaxfileupload.php スクリプト:
<?php $upFilePath = "../attachment/"; $ok=@move_uploaded_file($_FILES['img']['tmp_name'],$upFilePath); if($ok === FALSE){ echo json_encode('file_infor'=>'上传失败'); }else{ echo json_encode('file_infor'=>'上传成功'); } ?>
テストのために、次のようなメソッドを使用して、渡された変数値を保存できます:
$file_info = var_export($_FILES,true);
$ok = file_put_contents("../attachment/file_info.txt",$file_info);
if ($ok) exit(json_encode('file_infor'=>'アップロード成功'));
exit (json_encode('file_infor'=>'アップロードに失敗しました'));
※注意事項
HTML コード ファイル ボックス内のタグに注意してください:
1. id='img' は、ajaxfileupload.js プラグインの fileElementId:'img' を識別するために使用されます。
2. name='img' は、post を通じてバックグラウンド スクリプトに送信するときに使用されます。PHP は、$_FILES['img'] を通じてアップロードされたファイルのデータを読み取ります。そのような値がない場合、$_FILES 変数は空です。 🎜>
3. 追加パラメータのサポート
場合によっては、バックグラウンドで特定の変数に基づいてアップロードされたファイルを処理する必要があります。たとえば、ファイルを更新します。この時点で、いくつかの追加パラメータを同じステージに渡す必要があります。そこで、ajaxfileupload.js プラグインを変更しました。
addOtherRequestsToForm: function(form,data) { // add extra parameter var originalElement = $('<input type="hidden" name="" value="">'); for (var key in data) { name = key; value = data[key]; var cloneElement = originalElement.clone(); cloneElement.attr({'name':name,'value':value}); $(cloneElement).appendTo(form); } return form; }, ajaxFileUpload: function(s) { // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout s = jQuery.extend({}, jQuery.ajaxSettings, s); var id = new Date().getTime() var form = jQuery.createUploadForm(id, s.fileElementId); if ( s.data ) form = jQuery.addOtherRequestsToForm(form,s.data); var io = jQuery.createUploadIframe(id, s.secureuri);
url:'doajaxfileupload.php', //アップロードされたファイルを処理するサーバー
secureuri:false, //ページ処理コード内のファイルに対応するID値
data:{'test':'test','ok':'ok'}, //オブジェクトとして送信され、コンテンツ部分にJavaScriptの変数値を入力可能
fileElementId:'img',
array_push($_FILES,$_REQUEST); $file_info = var_export($_FILES,true); $ok = file_put_contents("../attachment/file_info.txt",$file_info); if ($ok) exit(json_encode('file_infor'=>'上传成功')); exit (json_encode('file_infor'=>'上传失败'));
バックグラウンド出力に保持される file_info.txt の内容は次のとおりです:
)
'ファイル' =>
配列 (
'名前' => 'firefox-java.txt',
'type' => 'text/plain',
'tmp_name' => 'D:\Tools\xampp\tmp\phpED45.tmp',
'エラー' => 0,
'サイズ' => 250,
)、
0 =>
配列 (
'テスト' => 'テスト',
「わかりました」 => 「わかりました」、
'PHPSESSID' => 'e379fd4fb2abca6e802a1302805a5535',
)、
)
ajaxfileupload.js:
jQuery.extend({ createUploadIframe: function(id, uri) { //create frame var frameId = 'jUploadFrame' + id; if(window.ActiveXObject) { var io = document.createElement('<iframe id="' + frameId + '" name="' + frameId + '" />'); if(typeof uri== 'boolean'){ io.src = 'javascript:false'; } else if(typeof uri== 'string'){ io.src = uri; } } else { var io = document.createElement('iframe'); io.id = frameId; io.name = frameId; } io.style.position = 'absolute'; io.style.top = '-1000px'; io.style.left = '-1000px'; document.body.appendChild(io); return io }, createUploadForm: function(id, fileElementId) { //create form var formId = 'jUploadForm' + id; var fileId = 'jUploadFile' + id; var form = $('<form action="" method="POST" name="' + formId + '" id="' + formId + '" enctype="multipart/form-data"></form>'); var oldElement = $('#' + fileElementId); var newElement = $(oldElement).clone(); $(oldElement).attr('id', fileId); $(oldElement).before(newElement); $(oldElement).appendTo(form); //set attributes $(form).css('position', 'absolute'); $(form).css('top', '-1200px'); $(form).css('left', '-1200px'); $(form).appendTo('body'); return form; }, addOtherRequestsToForm: function(form,data) { // add extra parameter var originalElement = $('<input type="hidden" name="" value="">'); for (var key in data) { name = key; value = data[key]; var cloneElement = originalElement.clone(); cloneElement.attr({'name':name,'value':value}); $(cloneElement).appendTo(form); } return form; }, ajaxFileUpload: function(s) { // TODO introduce global settings, allowing the client to modify them for all requests, not only timeout s = jQuery.extend({}, jQuery.ajaxSettings, s); var id = new Date().getTime() var form = jQuery.createUploadForm(id, s.fileElementId); if ( s.data ) form = jQuery.addOtherRequestsToForm(form,s.data); var io = jQuery.createUploadIframe(id, s.secureuri); var frameId = 'jUploadFrame' + id; var formId = 'jUploadForm' + id; // Watch for a new set of requests if ( s.global && ! jQuery.active++ ) { jQuery.event.trigger( "ajaxStart" ); } var requestDone = false; // Create the request object var xml = {} if ( s.global ) jQuery.event.trigger("ajaxSend", [xml, s]); // Wait for a response to come back var uploadCallback = function(isTimeout) { var io = document.getElementById(frameId); try { if(io.contentWindow) { xml.responseText = io.contentWindow.document.body?io.contentWindow.document.body.innerHTML:null; xml.responseXML = io.contentWindow.document.XMLDocument?io.contentWindow.document.XMLDocument:io.contentWindow.document; }else if(io.contentDocument) { xml.responseText = io.contentDocument.document.body?io.contentDocument.document.body.innerHTML:null; xml.responseXML = io.contentDocument.document.XMLDocument?io.contentDocument.document.XMLDocument:io.contentDocument.document; } }catch(e) { jQuery.handleError(s, xml, null, e); } if ( xml || isTimeout == "timeout") { requestDone = true; var status; try { status = isTimeout != "timeout" ? "success" : "error"; // Make sure that the request was successful or notmodified if ( status != "error" ) { // process the data (runs the xml through httpData regardless of callback) var data = jQuery.uploadHttpData( xml, s.dataType ); // If a local callback was specified, fire it and pass it the data if ( s.success ) s.success( data, status ); // Fire the global callback if( s.global ) jQuery.event.trigger( "ajaxSuccess", [xml, s] ); } else jQuery.handleError(s, xml, status); } catch(e) { status = "error"; jQuery.handleError(s, xml, status, e); } // The request was completed if( s.global ) jQuery.event.trigger( "ajaxComplete", [xml, s] ); // Handle the global AJAX counter if ( s.global && ! --jQuery.active ) jQuery.event.trigger( "ajaxStop" ); // Process result if ( s.complete ) s.complete(xml, status); jQuery(io).unbind() setTimeout(function() { try { $(io).remove(); $(form).remove(); } catch(e) { jQuery.handleError(s, xml, null, e); } }, 100) xml = null } } // Timeout checker if ( s.timeout > 0 ) { setTimeout(function(){ // Check to see if the request is still happening if( !requestDone ) uploadCallback( "timeout" ); }, s.timeout); } try { // var io = $('#' + frameId); var form = $('#' + formId); $(form).attr('action', s.url); $(form).attr('method', 'POST'); $(form).attr('target', frameId); if(form.encoding) { form.encoding = 'multipart/form-data'; } else { form.enctype = 'multipart/form-data'; } $(form).submit(); } catch(e) { jQuery.handleError(s, xml, null, e); } if(window.attachEvent){ document.getElementById(frameId).attachEvent('onload', uploadCallback); } else{ document.getElementById(frameId).addEventListener('load', uploadCallback, false); } return {abort: function () {}}; }, uploadHttpData: function( r, type ) { var data = !type; data = type == "xml" || data ? r.responseXML : r.responseText; // If the type is "script", eval it in global context if ( type == "script" ) jQuery.globalEval( data ); // Get the JavaScript object, if JSON is used. if ( type == "json" ) eval( "data = " + data ); // evaluate scripts within html if ( type == "html" ) jQuery("<div>").html(data).evalScripts(); //alert($('param', data).each(function(){alert($(this).attr('value'));})); return data; } })

ホットAIツール

Undresser.AI Undress
リアルなヌード写真を作成する AI 搭載アプリ

AI Clothes Remover
写真から衣服を削除するオンライン AI ツール。

Undress AI Tool
脱衣画像を無料で

Clothoff.io
AI衣類リムーバー

AI Hentai Generator
AIヘンタイを無料で生成します。

人気の記事

ホットツール

メモ帳++7.3.1
使いやすく無料のコードエディター

SublimeText3 中国語版
中国語版、とても使いやすい

ゼンドスタジオ 13.0.1
強力な PHP 統合開発環境

ドリームウィーバー CS6
ビジュアル Web 開発ツール

SublimeText3 Mac版
神レベルのコード編集ソフト(SublimeText3)

ホットトピック











123 クラウド ディスクにファイルをアップロードするにはどうすればよいですか? ファイルを 123 クラウド ディスクにアップロードして保存できますが、ほとんどの友人は 123 クラウド ディスクにファイルをアップロードする方法を知りません。次に、123 クラウドにファイルをアップロードする方法の画像とテキストを示します。編集者がプレイヤーのために持ってきたディスク、チュートリアル、興味のあるユーザーは見に来てください! 123 Cloud Disk にファイルをアップロードする方法 1. まず 123 Cloud Disk を開いてメイン ページに入り、アカウントに登録またはログインします; 2. 次に、以下に示すページに入り、矢印に沿って [アップロード] ボタンをクリックします。 3. 下部が展開されます。 機能バー ウィンドウで [ファイルの選択] 機能をクリックします; 4. 最後に、アップロードするファイルを選択し、アップロードが完了するまで辛抱強く待ちます。

タイトル: jQuery AJAX リクエストの 403 エラーを解決する方法とコード例。403 エラーは、サーバーがリソースへのアクセスを禁止するリクエストを指します。このエラーは通常、リクエストにアクセス許可がないか、サーバーによって拒否されたために発生します。 jQueryAJAX リクエストを行うときにこのような状況に遭遇することがありますが、この記事ではこの問題の解決方法とコード例を紹介します。解決策: 権限を確認します。まず、要求された URL アドレスが正しいことを確認し、リソースにアクセスするための十分な権限があることを確認します。

jQuery は、クライアント側の開発を簡素化するために使用される人気のある JavaScript ライブラリです。 AJAX は、Web ページ全体をリロードせずに、非同期リクエストを送信し、サーバーと対話するテクノロジーです。ただし、jQuery を使用して AJAX リクエストを行うと、403 エラーが発生することがあります。 403 エラーは通常、セキュリティ ポリシーまたは権限の問題が原因で、サーバーによってアクセスが拒否されたエラーです。この記事では、jQueryAJAX リクエストで 403 エラーが発生した場合の解決方法について説明します。

Ajax を使用して PHP メソッドから変数を取得することは、Web 開発では一般的なシナリオであり、Ajax を使用すると、データを更新せずにページを動的に取得できます。この記事では、Ajax を使用して PHP メソッドから変数を取得する方法と、具体的なコード例を紹介します。まず、Ajax リクエストを処理し、必要な変数を返すための PHP ファイルを作成する必要があります。以下は、単純な PHP ファイル getData.php のサンプル コードです。

jQueryAJAX エラー 403 の問題を解決するにはどうすればよいですか? Web アプリケーションを開発する場合、非同期リクエストを送信するために jQuery がよく使用されます。ただし、jQueryAJAX の使用時に、サーバーによってアクセスが禁止されていることを示すエラー コード 403 が発生する場合があります。これは通常、サーバー側のセキュリティ設定が原因ですが、回避する方法があります。この記事では、jQueryAJAX エラー 403 の問題を解決する方法と具体的なコード例を紹介します。 1.作る

Nut Cloud は、ユーザーにインテリジェントなファイル保存および同期サービスを提供することに特化した効率的なファイル管理ツールです。強力なデータ同期とバックアップ機能を備えており、ユーザーのデータの安全性を確保します。 Nut Cloud の一連の機能は、さまざまなシナリオでユーザーのニーズを満たし、優れたユーザー エクスペリエンスを提供するように設計されています。 Nut Cloud アプリにファイルをアップロードするにはどうすればよいでしょうか? このチュートリアル ガイドでは、手順について詳しく説明します。必要としているすべての人に役立つことを願っています。 Nut Cloud にファイルをアップロードするにはどうすればよいですか? 1. [マイ ファイル] ページで、[My Nut Cloud] をクリックして開きます。 2. 開いたページで、右下隅のプラスアイコンをクリックします。 3. 下部に表示されるオプションで、「SD カードからアップロード」をクリックします。 4. 開いた携帯電話ストレージでファイルを選択します。

Ajax (非同期 JavaScript および XML) を使用すると、ページをリロードせずに動的コンテンツを追加できます。 PHP と Ajax を使用すると、製品リストを動的にロードできます。HTML はコンテナ要素を含むページを作成し、Ajax リクエストはロード後に要素にデータを追加します。 JavaScript は Ajax を使用して XMLHttpRequest を通じてサーバーにリクエストを送信し、サーバーから JSON 形式で商品データを取得します。 PHP は MySQL を使用してデータベースから製品データをクエリし、それを JSON 形式にエンコードします。 JavaScript は JSON データを解析し、ページ コンテナーに表示します。ボタンをクリックすると、製品リストをロードするための Ajax リクエストがトリガーされます。

Ajax 機能を使用して非同期データ対話を実現する方法 インターネットと Web テクノロジーの発展に伴い、フロントエンドとバックエンド間のデータ対話が非常に重要になってきました。ページの更新やフォームの送信などの従来のデータ操作方法では、ユーザーのニーズを満たすことができなくなりました。 Ajax (非同期 JavaScript および XML) は、非同期データ対話のための重要なツールとなっています。 Ajax により、Web で JavaScript と XMLHttpRequest オブジェクトを使用できるようになります
