今回はajaxでフォーム送信とファイルアップロードを実装する方法を紹介します ajaxでフォーム送信とファイルアップロードを実装する際の注意事項は次のとおりです。 数日前、いくつかの小さな問題を発見しました。背景管理ページを書いているときに、写真をアップロードする必要がありました。そこで、非常に普通の Form を使用して Json 文字列と画像ファイルをアップロードしました。Form フォームは画像をアップロードするため、 タグに enctype = 'multipart/form-data' を追加するだけで済みます。画像 ;しかし、ここで問題が発生します。フォームを送信すると、戻り値を送信するページが直接ポップアップし、元のページが更新されます。このようにして、まず非同期 Ajax を使用して次のことを実現します。部分更新;ナンセンスです。これ以上は説明せずに、コードに直接進みましょう。まず HTML です。 类型 : 名称 : 开始时间 : 结束时间 : 省 : 市 : 门店 : 具体地址 : 上传图片 : 保存 取消 ログイン後にコピー上記は HTML コードです。コピーしやすいように、CSS はタグ内に直接記述されています。 多くの友人が、なぜ 2 つのフォームを作成するのか尋ねたいと考えています。 これは、バックグラウンドでデータを受信する必要に応じて、情報が 文字列に変換されるためです。それを 2 番目のフォームに入力します。2 番目のフォームの タグの style="display:none" が隠しタグであることに気付きました。最初のフォームを js 経由で文字列に変換し、それをタグ内に隠します。 この方法で、Ajax 経由で 2 番目のフォーム フォームを送信できます: $( '#sub' ).click( function () { var actTimeStart1 = $ ('#actstarttime') . datebox ('getValue'); var actTimeStart = changeDateToLong(actTimeStart1); var actTimeEnd1 = $('#actendtime').datebox('getValue'); var actTimeEnd = changeDateToLong(actTimeEnd1); if(actTimeStart != '' && actTimeEnd != '' && (actTimeStart - actTimeEnd > 0)){ $.messager.alert('警告','结束时间不能小于开始时间!','error'); return false; } else{ if ($('#form_insert').form('validate')) { var actType = document.getElementById("acttype").value; var actName = document.getElementById("actname").value; var actArea = document.getElementById("actadd").value; var actTimeStart1 = $('#actstarttime').datebox('getValue'); var actTimeStart = changeDateToLong(actTimeStart1); var actTimeEnd1 = $('#actendtime').datebox('getValue'); var actTimeEnd = changeDateToLong(actTimeEnd1); var t2 = $('#mem_Shop').combobox('getValue'); var jsonObj = {actType:actType,actName:actName,actTimeStart:actTimeStart,actTimeEnd:actTimeEnd,actArea:actArea,t2:t2}; var activityMemberJson = JSON.stringify(jsonObj); document.getElementById("Item").value=activityMemberJson; var form = new FormData(document.getElementById("form_sub")); $.ajax({ url : ../activity/actionActivityInsert', //http://www.cnblogs.com/jayxxxxxxx/ type : "post", data : form, //第二个Form表单的内容 processData : false, contentType : false, error : function(request) { }, success : function(data) { $('#box').datagrid('reload'); } }); window_open($('#insert_form'), 'close'); }else { $.messager.alert('警告' , '信息不完整!' , 'error'); } } });ログイン後にコピー 正直に言うと、私が FormData メソッドを使用していることは誰もが見ていました。 、これは html5 で非常に簡単に使用できます。アップロード 画像に対して enctype = 'multipart/form-data' を記述する必要はありません。この記事の事例を読んだ後は、この方法を習得したと思います。 、PHP 中国語 Web サイトの他の関連記事にも注目してください。 推奨読書: AjaxがJSON形式のデータをバックグラウンドに送信するときにエラーを処理する方法 AjaxバックグラウンドでアップロードされたJSONデータを処理する方法成功