Javascript ajax将多部分表单数据作为json对象上载

Javascript ajax将多部分表单数据作为json对象上载,javascript,jquery,ajax,json,Javascript,Jquery,Ajax,Json,这里有带图像的表单数据。我需要通过json对象发送整个图像数据。下面我提到了代码。在下面的方法下,我可以得到除logo之外的所有数据。我需要立即发送全部数据 <form class="form-horizontal" id="companyData"> <fieldset> <legend>Add Company</legend> <div clas

这里有带图像的表单数据。我需要通过json对象发送整个图像数据。下面我提到了代码。在下面的方法下,我可以得到除logo之外的所有数据。我需要立即发送全部数据

 <form class="form-horizontal" id="companyData">
            <fieldset>

                <legend>Add Company</legend>

                <div class="control-group">
                    <label class="control-label" for="code">Code</label>
                    <div class="controls">
                        <input id="code" name="code" type="text" placeholder="code" class="input-large">
                    </div>
                </div>

                <div class="control-group">
                    <label class="control-label" for="name">Name</label>
                    <div class="controls">
                        <input id="name" name="name" type="text" placeholder="Name"  class="input-xlarge">
                    </div>
                </div>

                <div class="control-group">
                    <label class="control-label" for="logo">Logo</label>
                    <div class="controls">
                        <input id="logo" name="logo" class="input-file" type="file">
                    </div>
                </div>

                <div class="control-group">
                    <label class="control-label" for="username">Admin Username</label>
                    <div class="controls">
                        <input id="username" name="username" type="text" placeholder="" class="input-xlarge">
                    </div>
                </div>

                <div class="control-group">
                    <label class="control-label" for="AdminPassword">Admin Password</label>
                    <div class="controls">
                        <input id="AdminPassword" name="AdminPassword" type="text" placeholder="" class="input-xlarge">
                    </div>
                </div>

                <div class="control-group">
                    <label class="control-label" for="submit"></label>
                    <div class="controls">
                        <button id="submit" name="submit" class="btn btn-primary">Save</button>
                    </div>
                </div>

            </fieldset>
        </form>

添加公司
代码
名称
标志
管理员用户名
管理员密码
拯救
这是我的脚本

<script type="text/javascript">
    $(document).ready(function () {
        $("#submit").click(function (e) {
            e.preventDefault();
            var formData = JSON.parse(JSON.stringify(jQuery('#companyData').serializeArray()));
            $.ajax({
                type: "POST",
                url: "",
                data: formData,
                cache: false,
                success: function (data) {
                }
            });

        });
    });
</script>

$(文档).ready(函数(){
$(“#提交”)。单击(功能(e){
e、 预防默认值();
var formData=JSON.parse(JSON.stringify(jQuery('#companyData').serializeArray());
$.ajax({
类型:“POST”,
url:“”,
数据:formData,
cache:false,
成功:功能(数据){
}
});
});
});

使用json.stringify时图像出现问题。请发送formdata对象并将所有项目追加到其中。试试这个

    var imgFile = document.getElementById('logo');
var imgfileList = imgFile.files;

var formdata = new FormData();
if (imgfileList && imgfileList != null && imgfileList.length > 0) {

    formdata.append(imgfileList[0].name, imgfileList[0]); or add the name
    formdata.append('logofilename', imgfileList[0]);
}
var other_data = $('#companyData :input').serializeArray();
$.each(other_data, function (key, input) {
    formdata.append(input.name, input.value);
});


    $.ajax({
        url: UrlRoot.SaveTeamInfo,
        data: formdata,
        processData: false,
        contentType: false,
        type: 'POST',
        success: function () {

        }
    });
请记住,按照上面ajax调用中的指定,将流程数据和内容类型添加到false

试试这是formdata未定义'

if(typeof FormData == "undefined"){
var data = [];
data.push(imgfileList[0].name, imgfileList[0]);
}
else{
var data = new FormData();
    data.append('data', JSON.stringify(inputData));
}

使用.push而不是.append for array

如果在没有ajax的情况下发送文件数据,那么表单上需要一个enctype=“multipart/form data”,这样在通过ajax发布数据时就可以使用相同或相似的格式。相关线程:看,你已经找到解决方案了吗?你能分享一下你的想法吗?非常感谢。好的,让我检查一下。在此之前,请尝试编辑的解决方案,这是formdata的一种变通方法,并让我知道它是否有效。请尝试在表单标记中添加enctype=“multipart/form data”,然后检查一次