Php JQuery多部分/数据ajax post
我正在使用JQuery发布表单数据,我已将其添加到我的函数中,以允许它发布/上载文件:Php JQuery多部分/数据ajax post,php,jquery,Php,Jquery,我正在使用JQuery发布表单数据,我已将其添加到我的函数中,以允许它发布/上载文件: mimeType:"multipart/form-data", 我在这里以HTML形式调用它: <form id="form1" method="post" action="/tickets/record?type=<?php echo $_GET["type"]; ?>&seq=<?php echo $_GET["seq"]; ?>" enctype="multipa
mimeType:"multipart/form-data",
我在这里以HTML形式调用它:
<form id="form1" method="post" action="/tickets/record?type=<?php echo $_GET["type"]; ?>&seq=<?php echo $_GET["seq"]; ?>" enctype="multipart/form-data" onsubmit="post_form('#form1');">
但它无法识别已选择的任何文件
我的完整jquery功能是:
function post_form(form_id, type, redir_url, loading_modal) {
type = type || '';
redir_url = redir_url || '';
loading_modal = loading_modal || '';
$( form_id ).submit(function(e) {
var formObj = $(this);
var formURL = formObj.attr("action");
var formData = new FormData(this);
CheckRequired(e);
if(loading_modal === '1') { } else {
LoadModalBody('<h2 align="center">Loading...</h3><p align="center"><i class="fa fa-refresh fa-spin fa-5x"></i></p>', 'Loading');
}
$.ajax({
url : '/section' + formURL,
type: "POST",
data : formData,
mimeType:"multipart/form-data",
contentType: false,
cache: false,
processData:false,
success:function(data, textStatus, jqXHR) {
//alert(type);
if(type === 'modal') {
if(redir_url === '') {
LoadModal('/section' + formURL, '');
} else {
LoadModal('/section' + redir_url, '');
}
} else if(type === 'reload') {
if(redir_url === '') {
location.reload();
} else {
OpenPage(redir_url);
}
} else {
//close the loading modal
if(loading_modal === '1') { } else {
CloseModal();
}
//location.reload();
//$("body").html(data);
}
},
error: function(jqXHR, textStatus, errorThrown) {
//if fails
}
});
return false;
e.preventDefault();
});
}
功能发布表单(表单id、类型、重读url、加载模式){
类型=类型| |“”;
redir_url=redir_url | |“”;
加载模式=加载模式| |'';
$(表格id).提交(功能(e){
var formObj=$(此项);
var formURL=formObj.attr(“操作”);
var formData=新formData(本);
所需支票(e);
如果(加载_modal==='1'){}else{
LoadModalBody('Loading…,'Loading');
}
$.ajax({
url:'/section'+formURL,
类型:“POST”,
数据:formData,
mimeType:“多部分/表单数据”,
contentType:false,
cache:false,
processData:false,
成功:函数(数据、文本状态、jqXHR){
//警报(类型);
如果(类型==‘模态’){
如果(重读url==''){
LoadModal('/section'+formURL',);
}否则{
LoadModal('/节'+redir_url');
}
}else if(类型==='reload'){
如果(重读url==''){
location.reload();
}否则{
OpenPage(重读url);
}
}否则{
//关闭加载模式
如果(加载_modal==='1'){}else{
CloseModal();
}
//location.reload();
//$(“body”).html(数据);
}
},
错误:函数(jqXHR、textStatus、errorshown){
//如果失败
}
});
返回false;
e、 预防默认值();
});
}
尝试手动将每个文件添加到FormData对象。这里是如何
HTML:
PHP:
将其用于Jquery多部分/表单数据提交
$(document).ready(function (e) {
$("#formid").on('submit', (function (e) {
e.preventDefault();
$("#message").empty();
$('#loading').show();
$.ajax({
url: "ajax_php_villa_file.php", // Url to which the request is send
type: "POST", // Type of request to be send, called as method
data: new FormData(this), // Data sent to server, a set of key/value pairs (i.e. form fields and values)
contentType: false, // The content type used when sending data to the server.
cache: false, // To unable request pages to be cached
processData: false,
beforeSend: function () {
$('.loader-img').show();
}, // To send DOMDocument or non processed data file it is set to false
success: function (data) // A function to be called if request succeeds
{
$('.loader-img').hide();
if (data.trim() != "")
$("#imresss").html(data);
}
});
}));
});
您就是这样做的:
function post_form(form_id, type, redir_url, loading_modal) {
type = type || '';
redir_url = redir_url || '';
loading_modal = loading_modal || '';
$( form_id ).submit(function(e) {
var formObj = $(this);
var formURL = formObj.attr("action");
var formData = new FormData;
//File Field
var regexp = /^[^[\]]+/,
fileInput = $(form_id+' input[type="file"]'), //If form doesn't work try to select the file input by ID here. ex: fileInput = $("#myFileInputHere");
fileInputName = regexp.exec(fileInput.attr('name'));
$.each($(fileInput)[0].files,function(i,file) {
formData.append(fileInputName, file); //Add file to form
});
CheckRequired(e);
if(loading_modal === '1') { } else {
LoadModalBody('<h2 align="center">Loading...</h3><p align="center"><i class="fa fa-refresh fa-spin fa-5x"></i></p>', 'Loading');
}
$.ajax({
url : '/section' + formURL,
type: "POST",
data : formData,
cache: false,
contentType: false,
processData: false,
success:function(data, textStatus, jqXHR) {
//alert(type);
if(type === 'modal') {
if(redir_url === '') {
LoadModal('/section' + formURL, '');
} else {
LoadModal('/section' + redir_url, '');
}
} else if(type === 'reload') {
if(redir_url === '') {
location.reload();
} else {
OpenPage(redir_url);
}
} else {
//close the loading modal
if(loading_modal === '1') { } else {
CloseModal();
}
//location.reload();
//$("body").html(data);
}
},
xhr: function(){
// get the native XmlHttpRequest object
var xhr = $.ajaxSettings.xhr() ;
// set the onprogress event handler
xhr.upload.onprogress = function(evt){
var perc = Math.round(evt.loaded/evt.total*100);
console.log(perc+'% Uploading...');
} ;
// set the onload event handler
xhr.upload.onload = function(){
console.log('Uploaded!');
} ;
// return the customized object
return xhr ;
} ,
error: function(jqXHR, textStatus, errorThrown) {
//if fails
}
});
return false;
e.preventDefault();
});
}
功能发布表单(表单id、类型、重读url、加载模式){
类型=类型| |“”;
redir_url=redir_url | |“”;
加载模式=加载模式| |'';
$(表格id).提交(功能(e){
var formObj=$(此项);
var formURL=formObj.attr(“操作”);
var formData=新formData;
//文件字段
var regexp=/^[^[\]]+/,,
fileInput=$(form_id+'input[type=“file”]”),//如果表单不起作用,请尝试在此处按id选择文件输入。例如:fileInput=$(“#myFileInputHere”);
fileInputName=regexp.exec(fileInput.attr('name');
$.each($(fileInput)[0]。文件,函数(i,文件){
append(fileInputName,file);//将文件添加到表单
});
所需支票(e);
如果(加载_modal==='1'){}else{
LoadModalBody('Loading…,'Loading');
}
$.ajax({
url:'/section'+formURL,
类型:“POST”,
数据:formData,
cache:false,
contentType:false,
processData:false,
成功:函数(数据、文本状态、jqXHR){
//警报(类型);
如果(类型==‘模态’){
如果(重读url==''){
LoadModal('/section'+formURL',);
}否则{
LoadModal('/节'+redir_url');
}
}else if(类型==='reload'){
如果(重读url==''){
location.reload();
}否则{
OpenPage(重读url);
}
}否则{
//关闭加载模式
如果(加载_modal==='1'){}else{
CloseModal();
}
//location.reload();
//$(“body”).html(数据);
}
},
xhr:function(){
//获取本机XmlHttpRequest对象
var xhr=$.ajaxSettings.xhr();
//设置onprogress事件处理程序
xhr.upload.onprogress=函数(evt){
var perc=数学舍入(evt加载/evt总计*100);
日志(perc+'%Uploading…);
} ;
//设置onload事件处理程序
xhr.upload.onload=函数(){
console.log('upload!');
} ;
//返回自定义对象
返回xhr;
} ,
错误:函数(jqXHR、textStatus、errorshown){
//如果失败
}
});
返回false;
e、 预防默认值();
});
}
看看,也许它能帮你。看看正确的答案,他是如何形成AJAX的。你的解决方案使一切变得过于复杂,只会传递文件类型的输入字段。您只需执行formData=newformdata(this)
(不执行任何正则表达式或附加)即可传递表单中的所有字段。
$( "#my_form" ).submit(function(e) {
e.preventDefault();
var data = new FormData();
$.each( $('#my_files')[0].files, function(i, file) {
data.append('file[]', file);
});
$.ajax({
url: 'http://162.243.221.224/multipart/upload.php', // I will keep this script alive for few weeks
data: data,
cache: false,
contentType: false,
processData: false,
// mimeType:"multipart/form-data",
type: 'POST',
dataType: "text",
success: function(data){
alert(data);
},
error: function(data){
alert(data);
}
});
return false;
});
<?php
print_r( $_FILES['file']['name'] );
$(document).ready(function (e) {
$("#formid").on('submit', (function (e) {
e.preventDefault();
$("#message").empty();
$('#loading').show();
$.ajax({
url: "ajax_php_villa_file.php", // Url to which the request is send
type: "POST", // Type of request to be send, called as method
data: new FormData(this), // Data sent to server, a set of key/value pairs (i.e. form fields and values)
contentType: false, // The content type used when sending data to the server.
cache: false, // To unable request pages to be cached
processData: false,
beforeSend: function () {
$('.loader-img').show();
}, // To send DOMDocument or non processed data file it is set to false
success: function (data) // A function to be called if request succeeds
{
$('.loader-img').hide();
if (data.trim() != "")
$("#imresss").html(data);
}
});
}));
});
function post_form(form_id, type, redir_url, loading_modal) {
type = type || '';
redir_url = redir_url || '';
loading_modal = loading_modal || '';
$( form_id ).submit(function(e) {
var formObj = $(this);
var formURL = formObj.attr("action");
var formData = new FormData;
//File Field
var regexp = /^[^[\]]+/,
fileInput = $(form_id+' input[type="file"]'), //If form doesn't work try to select the file input by ID here. ex: fileInput = $("#myFileInputHere");
fileInputName = regexp.exec(fileInput.attr('name'));
$.each($(fileInput)[0].files,function(i,file) {
formData.append(fileInputName, file); //Add file to form
});
CheckRequired(e);
if(loading_modal === '1') { } else {
LoadModalBody('<h2 align="center">Loading...</h3><p align="center"><i class="fa fa-refresh fa-spin fa-5x"></i></p>', 'Loading');
}
$.ajax({
url : '/section' + formURL,
type: "POST",
data : formData,
cache: false,
contentType: false,
processData: false,
success:function(data, textStatus, jqXHR) {
//alert(type);
if(type === 'modal') {
if(redir_url === '') {
LoadModal('/section' + formURL, '');
} else {
LoadModal('/section' + redir_url, '');
}
} else if(type === 'reload') {
if(redir_url === '') {
location.reload();
} else {
OpenPage(redir_url);
}
} else {
//close the loading modal
if(loading_modal === '1') { } else {
CloseModal();
}
//location.reload();
//$("body").html(data);
}
},
xhr: function(){
// get the native XmlHttpRequest object
var xhr = $.ajaxSettings.xhr() ;
// set the onprogress event handler
xhr.upload.onprogress = function(evt){
var perc = Math.round(evt.loaded/evt.total*100);
console.log(perc+'% Uploading...');
} ;
// set the onload event handler
xhr.upload.onload = function(){
console.log('Uploaded!');
} ;
// return the customized object
return xhr ;
} ,
error: function(jqXHR, textStatus, errorThrown) {
//if fails
}
});
return false;
e.preventDefault();
});
}