如何使用jquery发送文件输入?
我有一个包含3个文件输入的表单。我想通过jquery发送它。我尝试在jquery中序列化函数,但我意识到这个函数不发送文件输入 这是我的表格:如何使用jquery发送文件输入?,jquery,file,input,Jquery,File,Input,我有一个包含3个文件输入的表单。我想通过jquery发送它。我尝试在jquery中序列化函数,但我意识到这个函数不发送文件输入 这是我的表格: <form id="submit_pics" action="#" > file 1 : <input name="file1" id="file1" type="file" /><br /> file 2 : <input name="file2" id="file2" type="fil
<form id="submit_pics" action="#" >
file 1 : <input name="file1" id="file1" type="file" /><br />
file 2 : <input name="file2" id="file2" type="file" /><br />
file 3 : <input name="file3" id="file3" type="file" /><br />
<br />
<div>
<a id="submit" href="javascript:;" ><img src="uploads/images/button1.png" /></a>
</div>
</form>
文件1:
文件2:
文件3:
这是我的javascript代码:
<script type="text/javascript">
$(document).ready(function(){
$("#level3").click(function(event) {
var str = $("#submit_pics").serialize();
$.ajax({
type: "POST",
url: "track.php",
data: str,
success: function(theResponse) {
$('#req_result').html(theResponse);
}
return false;
});
});
$(文档).ready(函数(){
$(“#level3”)。单击(函数(事件){
var str=$(“#提交图片”).serialize();
$.ajax({
类型:“POST”,
url:“track.php”,
数据:str,
成功:功能(响应){
$('req#u result').html(响应);
}
返回false;
});
});
您应该查看一下。使用它,您可以轻松地以编程方式提交任何表单。您不能通过
$.ajax()完成此操作
但您可以使用它。不幸的是,您无法通过XMLHttpRequest上载文件。AJAX实际上并没有将表单发布到服务器,而是以post或GET请求的形式将选定的数据发送到服务器。Javascript无法从用户计算机获取文件并将其发送到服务器
您可以使用一种棘手的解决方法,将请求发布到一个隐藏的iframe中(不使用AJAX)
看看这个经过一些研究,我发现你可以用:
$.ajax({
url: 'track.php',
type: 'POST',
data: new FormData($("#submit_pics")[0]),
processData: false,
contentType: false
}).
我是Java程序员(Liferay),在服务器中,我使用以下命令获取文件:
UploadPortletRequest uploadRequest = PortalUtil.getUploadPortletRequest(request);
File File1 = uploadRequest.getFile("file1");
File File2 = uploadRequest.getFile("file2");
我相信php中也存在类似的东西。这段代码适合我
_private.saveFile=function(){
var formElement = $("#formId")[0];
var _params = new FormData(formElement),
_url = $(formElement).attr("action");
_private.postFile(_url,_params,function(data,error){
console.log(data);
console.log(error);
});
}
_private.postFile=function(_urlService,_parameters,callback){
var _url= _public.getPath()+_urlService;
_private.httpPostFile(_url,callback,_parameters);
};
_private.httpPostFile=function(_url,callback,_data){
$.ajax({
url: _url,
type: 'POST',
data: _data,
mimeType: "multipart/form-data",
contentType: false,
cache: false,
processData: false,
success: function (data, textStatus, jqXHR) {
callback(data,null);
},
error: function(xhr, status, error) {
console.log('error ',error);
console.log('status ',status);
console.log('xhr ',xhr);
callback(null,error);
}
});
}
非常感谢你的完整回答,朋友,你帮了我这么多:)这是真的吗?这个博客说的不是这样的:过去是真的,是的。现在大多数浏览器都是最新的,并且允许这样做。尽管如此,我相信IE仍然有一些保护功能,除非用户手动单击提交,否则不能发布。