如何通过相同的AJAX请求发送数组和文件?

时间:2019-01-02 02:19:29

标签: javascript php ajax

我试图通过我的AJAX请求将图像文件和数组发送到我的PHP脚本,但是数组或图像文件都没有显示。我已经找到了问题所在,即线路,在处理文件时必须将其添加到AJAX中。

contentType:否, processData:false,

如果添加了这两行,则数组到达PHP脚本为空。我可以做些什么? :)

我的AJAX:

$('#createMember').on('submit', function(event){
    event.preventDefault();
    $("#LoadingIcon").show();

    var form_data = $(this).serialize();

    $.ajax({
        url:"scripts/createMember.php",
        method:"POST",
        data:form_data,
        cache: false,
        contentType: false,
        processData: false,
        success:function(data)
        {
          $.notify({
            title: '<strong>Created!</strong><br>',
            message: 'Member is now created!'
          });
          $("#LoadingIcon").fadeOut(200);
        });
      });

我的HTML

<form method="post" id="opretMedlem" enctype="multipart/form-data">
    <input type="text" name="info[name]" class="form-control1 info" />
    <input type="text" name="info[age]" class="form-control1 info" />
    <input type="file" name="info[image]" class="form-control1 info" />
    <input type="submit" name="submit" class="btn btn-info" value="Create member" />
</form>

1 个答案:

答案 0 :(得分:0)

您忘记了在ajax请求中使用enctype。另外,请尝试使用FormData()构造函数,而不是序列化数据。

$('#opretMedlem').on('submit', function(event){
    event.preventDefault();

    var form_data = $(this).serialize();

    var form = $(this)[0];
    var data = new FormData(form);

    $.ajax({
        url:"scripts/createMember.php",
        enctype: 'multipart/form-data',
        method:"POST",
        data:data,
        cache: false,
        contentType: false,
        processData: false,
        success:function(data) {
          alert('done');
        }
   });
});

看看小提琴:https://jsfiddle.net/up8zavtb/