简体   繁体   English

用ajax和jquery上传文件和表单

[英]file and form upload with ajax and jquery

How I to for send an image and form with a request ajax? 我如何发送带有请求Ajax的图像和表单?

HTML 的HTML

<input type="text" class="form-control" id="Name"/>
<input type="file" name="imgClient" class="form-control" id="UploadIMG"/>

</form>

<button id="btnSave">Save</button>

JQuery - AJAX jQuery-AJAX

$("#btnSave").click(function()
{ 
    var Url = 'http://localhost/systemm/public/painel/client';

    var Dados = $('#FormClient').serialize();           

    $.ajax({
        type:Type,
        url: Url,
        dataType: 'JSON',
        data: Dados,
        success:function(data){
            if($.isEmptyObject(data.error))
                location.reload();                      
            else        
                printErrorMsg(data.error);

        },
        error:function(e){
            alert('Ocorreu um erro !');
            console.log(e);
            },
        });
});

When I serialize the data and put in an alert to display I see that the image is not there, how do I send the image along with my form to my server/controller ? 当我对数据进行序列化并显示警报时,我看到该图像不存在,该如何将该图像与表单一起发送到server/controller

Use formData object: 使用formData对象:

HTML 的HTML

<form enctype="multipart/form-data">
    <input type="text" class="form-control" id="Name" name="Name"/>
    <input type="file" name="imgClient" class="form-control" id="UploadIMG"/>
    <button id="btnSave">Save</button>
</form>

JS JS

$("#btnSave").click(function() { 

    var Url = 'http://localhost/systemm/public/painel/client';

    var formData = new FormData(this.form);

    $.ajax({
        type:'post',
        url: Url,
        dataType: 'JSON',
        data: formData,
        ...

    });

});

Try to change content dataType. 尝试更改内容数据类型。 Set dataType='false' 设置dataType='false'

 $.ajax({
    type:Type,
    url: Url,
    dataType: false,
    data: Dados,
    success:function(data){
        if($.isEmptyObject(data.error))
            location.reload();                      
        else        
            printErrorMsg(data.error);

    },
    error:function(e){
        alert('Ocorreu um erro !');
        console.log(e);
        },
    });

Hope this helps 希望这可以帮助

This is the way i have done it. 这就是我做到的方式。

var obj = document.getElementById('my_form_id')
var data = new FormData(obj);
$.ajax({
    type: 'post',
    url: $(obj).parent().attr('action'),
    processData: false,
    contentType: false,
    data: data,
    success: function(result){
        profile_app.user.foto_url = result.url
    },
    error: function(error){
        console.log("error");
    }
});

Let's try following, 让我们尝试跟随,

<form id="POST_FORM" method="post" enctype="multipart/form-data" >
    <input type="text" class="form-control" id="Name"/>
    <input type="file" name="imgClient" class="form-control" id="UploadIMG"/>
    <button type="submit" id="btnSave">Save</button>
</form>

$("#POST_FORM").submit(function(){
    var data = new FormData(this);
    addPOST(data);
    return false;
});

function addPOST(formData){
    $.ajax({
        type:'POST',
        url: Url,
        data:formData,
        dataType:"json",
        cache:false,
        contentType: false,
        processData: false,
        success:function(response){

        },
        error: function(data){
            console.log("error");
            console.log(data);
        }
    });
}

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM