formData()在追加数据后不提供数据

时间:2017-09-25 09:51:46

标签: jquery ajax codeigniter form-data

第4行给出了表单元素,但是第5行没有给出任何内容。我该怎么办?

$('#btnSave').click(function () {
                var form = $("#myForm");   
                var formData = new FormData($(form)[0]);
                console.log(form);//this gives form elements 
                console.log(formData);// but this gives nothing
                var url = '<?php echo base_url() ?>' + 'product/add';
                    $.ajax({
                        type                : 'post',
                        url                 :  url,
                        processData: false,
                        contentType: false,
                        data: formData,
                        success: function (response) {
                            if (response){
                                $('#myModal').modal('hide');
                                $('#myForm')[0].reset();
                                $('.alert-success').html('Record Added').fadeIn().delay(4000).fadeOut('slow');

                            } else {
                                alert('Error');
                            }
                        },
                        error: function () {
                            alert('could not add data');
                        }
                    });                       
                });
            });

// formData对象不附加任何内容。请问任何解决方案?

2 个答案:

答案 0 :(得分:0)

尝试下面的代码并在ajax代码中进行一些更改。在代码中添加以下参数。

processData:false,
contentType:false,

在ajax开始之前添加var formData = new FormData($("#formID")[0]);行。

或检查以下代码并根据您的代码进行更改。

$('#btnSave').click(function (event) {
        var form = $("#myForm");   
        var formData = new FormData($(form)[0]);;         
        var url = '<?php echo base_url() ?>' + 'product/add';
         if($('#picture').val()==''){
             alert("please select the file");
         } else{
            $.ajax({
                type: 'ajax',
                data: formData,
                url: url,
                method: 'POST',
                processData: false,
                contentType: false,
                success: function (response) {
                    if (response) {
                        $('#myModal').modal('hide');
                        $('#myForm')[0].reset();
                        $('.alert-success').html('Record Added').fadeIn().delay(4000).fadeOut('slow');
                        setTimeout(function () {// wait for 5 secs(2)
                            location.reload(); // then reload the page.(3)
                        }, 1);
                    } else {
                        alert('Error');
                    }
                },
                error: function () {
                    alert('could not add data');
                }

            });
        }
    });
});

答案 1 :(得分:0)

在你的代码中有多个错误,这里我有我在ajax中使用的代码

          var form=document.getElementById('form_id');
          var fdata=new FormData(form);
            $.ajax({
                type: "POST",
                url: 'Your_url',
                dataType: 'json',
                data:fdata,
                processData: false,
                contentType: false,
                beforeSend: function () {

                },
                success: function (data) {

                   //Do something on response
                },
                complete: function () {

                }
            });

这里你的错误是你使用type: "ajax"这是不正确的写法,因为你必须指定数据传递方法POST或GET,

您的代码中的第二个错误是,您在代码的第3行上做了两个分号(;),这就是javascript无法正常工作的原因。

我希望这对你有用。