使用ajax序列化文件类型字段和发布表单数据

时间:2014-02-10 07:05:47

标签: php ajax forms

我有2个输入字段和一个字段来上传文件。我正在尝试使用AJAX发布表单,序列化表单数据。但问题是我将$ _FILES清空。

这是我的代码:

           form name="dataform" id="dataform" enctype="multipart/form-data" 

              <input name="url" class="inputForm" id="url"  />

           <input type="file"  id="image" name="image" class="inputForm" />

            $.ajax({

            type: "POST",

    url: "test.php",

    data: datastring,

            success: function(resultdata){


            }

             });

&GT;

2 个答案:

答案 0 :(得分:0)

问题是jQuery会将文件数组转换为字符串,而服务器无法将其取出。

但不要担心,总会有另一种解决方案,

你可以参考这个插件来使用ajax上传图片,

http://www.sanwebe.com/2012/05/ajax-image-upload-and-resize-with-jquery-and-php

非常简单,你只需要使用ajax提交表单,然后在php文件中执行上传操作,然后返回到ajax函数,而不重定向另一个页面。

答案 1 :(得分:0)

根据我所知道你不能通过使用ajax上传文件(任何东西)(没有支持,你可以使用插件,iframe等)

我来自java背景我不关心PHP,但我相信你可以通过使用iframe实现这一目标,

请参阅see this link

我将举例说明你怎么做(我在我的项目中做了同样的事我粘贴)

    <form action="${pageContext.request.contextPath}/catalogue/importReportaccon.action" method="post" enctype="multipart/form-data" target="upload_target" id="report_result" >

        <input name="fileData" type="file" id="uploadAccessionNo" class="hidden_import"/>
        <iframe id="upload_target" name="upload_target" src="#" style="width:0;height:0;border:0px solid #fff;"></iframe>                 

        <a type="button" class="right button left" onclick="displayFileBrowseButton();" id="datasheet_import" title="Import" style="margin-left: -10px;">Import <span class="icon icon7"></a>

    </form>

脚本

function displayFileBrowseButton(){
       $("#uploadAccessionNo").click();
    }


$(document).ready(function() {

    document.getElementById("uploadAccessionNo").onchange = function() {

        document.getElementById("report_result").submit();

    }

});

如果您不明白,请通过您的评论告诉我