2017-05-30 54 views
0

我试图看到一些例子之前,但在Ajax中,当我们使用表单数据,我们需要序列化它individualy?因为我序列化正常的数据和它的罚款,但输入文件类型我不能通过邮寄他的价值,但如果我打印的价值,它显示正确,但在数据与他的名字参考是行不通的。Codeigniter ajax输入文件收集值

我的表格示例代码:

<form id="Add-Form" action="" method="post" class="form-horizontal" enctype="multipart/form-data"> 
    <div class="form-group"> 
     <label class="label-control col-md-2"> tt </label> 
     <div class="col-md-8"> 
      <input type="file" id="sd" name="s" class="btn btn-default" ></input> 
     </div> 
    </div> 

而这里的AJAX部分。

var url = $('#Add-Modal').attr('action'); 
var data = $('#Add-Form').serialize(); 

var title = $('input[name=title]'); 
var body = $('textarea[name=subject]'); 
var file = $('input[name=s]'); 

$.ajax({ 
    type: 'ajax', 
    method: 'post', 
    url: url, 
    data: data, 
    async: false, 
    dataType: 'json', 
+0

而不是让个别领域使用:对形式'VAR数据= $(本).serialize()'提交 –

+0

是的,但我使用这种方式来获得individualy为验证领域:) – asgasg

回答

0

上传图片用ajax:

尝试这种方式

<form id="Add-Form" action="Your controller method name(Example:<?=base_url().'Test_controller/test_image'?>)" method="post" class="form-horizontal" enctype="multipart/form-data"> 
    <div class="form-group"> 
     <label class="label-control col-md-2"> tt </label> 
     <div class="col-md-8"> 
      <input type="file" id="sd" name="s" class="btn btn-default" ></input> 
    <input type="submit" name="submit" value="submit"> 
     </div> 
    </div> 
</form> 

jQuery代码:

<script type="text/javascript" src="https://code.jquery.com/jquery-3.2.1.min.js"></script> 
<script type="text/javascript"> 
    $(document).ready(function() { 
     $("#Add-Form").submit(function(e){ 
      e.preventDefault(); 
      var formData = new FormData($("#Add-Form")[0]); 

      $.ajax({ 
       url : $("#Add-Form").attr('action'), 
       dataType : 'json', 
       type : 'POST', 
       data : formData, 
       contentType : false, 
       processData : false, 
       success: function(resp) { 
        console.log(resp);      
       } 
      }); 
     }); 
    }); 

</script> 

控制器:

function test_image() { 
    print_r($_FILES); 
} 
+0

问题我有一个正常的形式与信息,我不想只传递图像名称的信息,我想通过图像名称/文件和其他但idk如果有一个演员阵容。你的方式会使事情不同 – asgasg

+0

用这种方式btw你怎么处理表单数据追加后,我的意思是我如何选择即时通讯接收的文件,因为如果我console.log表单数据它不显示对象,其空白 – asgasg

+0

Formdata是对象类型并以编码格式发送数据,因此无法在控制台中打印数据,但可以在控制器功能中打印数据。 和FormData将所有数据发布到表单标记之间的控制器函数中。 @ Enigma – Nidhi