如何使用php jquery ajax上传文件和插入数据

Stf*_*vns 5 php ajax jquery codeigniter jquery-file-upload

我无法通过ajax发送到php文件上传和ajax数据。This my code just send file upload. 数据未发送到我的 php 代码。我创建表单并使用 ajax 在 php 上发布单击时发送的函数。I'm using codeigniter

这是我的表格:

<form action="<?php echo site_url('home/send_chat');?>" method="post" enctype="multipart/form-data">
  <input name="message" id="message" type="text" class="form-control input-sm" />
  <input type="file" id="file" name="file" />
  <br />
  <span class="input-group btn">
    <button type="submit" class="btn btn-info btn-sm" id="submit">Enkripsi</button>
  </span>
</form>
Run Code Online (Sandbox Code Playgroud)

这个javascript使用ajax在php上发送帖子:

$('#submit').on('click', function(){
  var message = $('#message').val();

  var fd = new FormData(this);
  fd.append('file',$('#file')[0].files[0]);

  $.ajax({
    method:"POST",
    url:"<?php echo site_url('home/send_chat');?>",    
    data: {fd,message:message},  
    cache: false,
    contentType: false,
    processData: false,   
    success: function(data){                 
      alert(data);
    },
    error: function(xhr, status, error) {
      alert(xhr.responseText);
    }  
  });
});
Run Code Online (Sandbox Code Playgroud)

我已经在尝试使用它$_POST['message'];,但$this->input->post("message");它不能同时使用这个 php 来处理代码:

<?php if ( ! defined('BASEPATH')) exit('No direct script access allowed');
class Home extends CI_Controller {
  public function send_chat()
  {
    $name    = $_FILES['file']['name'];
    $error   = $_FILES['file']['error'];
    $size    = $_FILES['file']['size'];


    // $message = $_POST['message'];
    $message = $this->input->post("message");

    $user    = $this->session->userdata('username');
    $iduser  = $this->session->userdata('userID');



    $insert="insert into chat (user,message,id_user,fileupload) VALUES ('$user','$message','$userid','$name')";
    $this->db->query($insert);
  }
}
Run Code Online (Sandbox Code Playgroud)

在数据库中,我只是发送名称文件 upload.user、message 和 iduser 不发送。

sam*_*war 4

我认为您的问题可能出在 ajax 代码中,因为您正在使用 formData 对象。尝试附加消息变量

$('#submit').on('click', function(){

  var fd = new FormData(this);
  fd.append('file',$('#file')[0].files[0]);
  fd.append('message ',$('#message').val());

  $.ajax({
    method:"POST",
    url:"<?php echo site_url('home/send_chat');?>",    
    data: fd,  
    cache: false,
    contentType: false,
    processData: false,   
    success: function(data){                 
      alert(data);
    },
    error: function(xhr, status, error) {
      alert(xhr.responseText);
    }  
  });
});
Run Code Online (Sandbox Code Playgroud)