Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/file/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何使用jquery发送文件输入?_Jquery_File_Input - Fatal编程技术网

如何使用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

我有一个包含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="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仍然有一些保护功能,除非用户手动单击提交,否则不能发布。