猿问

如何使用FormData上载Ajax文件

如何使用FormData上载Ajax文件

这是我使用拖放功能动态生成的html。

<form method="POST" id="contact" name="13" class="form-horizontal wpc_contact" novalidate="novalidate" enctype="multipart/form-data"><fieldset>
    <div id="legend" class="">
        <legend class="">file demoe 1</legend>
        <div id="alert-message" class="alert hidden"></div>
    </div>

    <div class="control-group">
        <!-- Text input-->
        <label class="control-label" for="input01">Text input</label>
        <div class="controls">
            <input type="text" placeholder="placeholder" class="input-xlarge" name="name">
            <p class="help-block" style="display:none;">text_input</p>
        </div>
        <div class="control-group">  </div>
        <label class="control-label">File Button</label>

        <!-- File Upload --> 
        <div class="controls">
            <input class="input-file" id="fileInput" type="file" name="file">
        </div>
    </div>
    <div class="control-group">    

        <!-- Button --> 
        <div class="controls">
            <button class="btn btn-success">Button</button>
        </div>
    </div></fieldset></form>

这是我的js密码.。

<script>
    $('.wpc_contact').submit(function(event){
        var formname = $('.wpc_contact').attr('name');
        var form = $('.wpc_contact').serialize();               
        var FormData = new FormData($(form)[1]);

        $.ajax({
            url : '<?php echo plugins_url(); ?>'+'/wpc-contact-form/resources/js/tinymce.php',
            data : {form:form,formname:formname,ipadd:ipadd,FormData:FormData},
            type : 'POST',
            processData: false,
            contentType: false,
            success : function(data){
            alert(data); 
            }
        });
   }


慕森卡
浏览 503回答 3
3回答

收到一只叮咚

要正确使用表单数据,您需要执行两个步骤。制剂您可以将整个表单交给FormData()进行处理。var&nbsp;form&nbsp;=&nbsp;$('form')[0];&nbsp;//&nbsp;You&nbsp;need&nbsp;to&nbsp;use&nbsp;standard&nbsp;javascript&nbsp;object&nbsp;herevar&nbsp;formData&nbsp;=&nbsp;new&nbsp;FormData(form);或为FormData()指定确切数据var&nbsp;formData&nbsp;=&nbsp;new&nbsp;FormData();formData.append('section',&nbsp;'general');formData.append('action',&nbsp;'previewImg'); //&nbsp;Attach&nbsp;fileformData.append('image',&nbsp;$('input[type=file]')[0].files[0]);发送表格使用jQuery的Ajax请求如下所示:$.ajax({ &nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;'Your&nbsp;url&nbsp;here', &nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;formData, &nbsp;&nbsp;&nbsp;&nbsp;type:&nbsp;'POST', &nbsp;&nbsp;&nbsp;&nbsp;contentType:&nbsp;false,&nbsp;//&nbsp;NEEDED,&nbsp;DON'T&nbsp;OMIT&nbsp;THIS&nbsp;(requires&nbsp;jQuery&nbsp;1.6+) &nbsp;&nbsp;&nbsp;&nbsp;processData:&nbsp;false,&nbsp;//&nbsp;NEEDED,&nbsp;DON'T&nbsp;OMIT&nbsp;THIS &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;...&nbsp;Other&nbsp;options&nbsp;like&nbsp;success&nbsp;and&nbsp;etc});在此之后,它将发送Ajax请求,就像您提交常规表单一样enctype="multipart/form-data"更新:如果没有type:"POST"在选项中,因为所有文件都必须通过POST请求发送。注:&nbsp;contentType: false只提供从jQuery 1.6开始

偶然的你

我不能在上面加上评论,因为我没有足够的声誉,但是上面的回答对我来说几乎是完美的,但我不得不补充类型:“POST”到.ajax电话。我抓挠头几分钟,试图找出我做错了什么,这是它所需要的一切,并努力工作。这就是整个片段:完全归功于我上面的答案,这只是一个小小的改动。这只是为了防止其他人陷入困境,看不到显而易见的事实。&nbsp;&nbsp;$.ajax({ &nbsp;&nbsp;&nbsp;&nbsp;url:&nbsp;'Your&nbsp;url&nbsp;here', &nbsp;&nbsp;&nbsp;&nbsp;data:&nbsp;formData, &nbsp;&nbsp;&nbsp;&nbsp;type:&nbsp;"POST",&nbsp;//ADDED&nbsp;THIS&nbsp;LINE &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;THIS&nbsp;MUST&nbsp;BE&nbsp;DONE&nbsp;FOR&nbsp;FILE&nbsp;UPLOADING &nbsp;&nbsp;&nbsp;&nbsp;contentType:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;processData:&nbsp;false, &nbsp;&nbsp;&nbsp;&nbsp;//&nbsp;...&nbsp;Other&nbsp;options&nbsp;like&nbsp;success&nbsp;and&nbsp;etc})
随时随地看视频慕课网APP
我要回答