Codeigniter的jQuery不工作里面的AJAX文件上传

Codeigniter的jQuery不工作里面的AJAX文件上传

问题描述:

我有codeigniter中的AJAX文件上传代码。问题是我改变了简单的表单提交到文件提交。但是之后,JQUERY停止了工作。响应即将到来,但同时,调用ajax错误函数。我不知道我的代码有什么问题。Codeigniter的jQuery不工作里面的AJAX文件上传

这是我的控制器。

public function ajax_add() { 
    $this->_validate(); 

    $config = [ 
    'upload_path' => './assets/game_images/', 
    'allowed_types' => 'gif|png|jpg|jpeg' 
    ]; 
    $this->load->library('upload', $config); 
    if ($this->upload->do_upload('image')) { 
     $file = $this->upload->data(); 
     $file_name = $file['file_name']; 

     if ($file_name == '') { 
      $data['error_string'][] = 'Please upload an image.'; 
      $data['status'] = FALSE; 
      echo json_encode($data); 
      exit(); 
     } 
    } else { 
     $data['inputerror'][] = 'image'; 
     $data['error_string'][] = $this->upload->display_errors(); 
     $data['status'] = FALSE; 
     echo json_encode($data); 
     exit(); 
    } 

    $data = array(
     'title' => $this->input->post('title'), 
     'iframe' => $this->input->post('iframe'), 
     'status' => $this->input->post('status'), 
     'category_id' => $this->input->post('category_id'), 
     //'image' => $file_name 
     ); 
    $insert = $this->game->save($data); 
    echo json_encode(array("status" => TRUE)); 
} 

private function _validate() { 
    $data = array(); 
    $data['error_string'] = array(); 
    $data['inputerror'] = array(); 
    $data['status'] = TRUE; 

    if ($this->input->post('title') == '') { 
     $data['inputerror'][] = 'title'; 
     $data['error_string'][] = 'Game Title is required'; 
     $data['status'] = FALSE; 
    } 

    if ($this->input->post('iframe') == '') { 
     $data['inputerror'][] = 'iframe'; 
     $data['error_string'][] = 'Game Iframe is required'; 
     $data['status'] = FALSE; 
    } 

    if ($this->input->post('status') == '') { 
     $data['inputerror'][] = 'status'; 
     $data['error_string'][] = 'Status is required'; 
     $data['status'] = FALSE; 
    } 

    if ($this->input->post('category_id') == '') { 
     $data['inputerror'][] = 'category_id'; 
     $data['error_string'][] = 'Please select category'; 
     $data['status'] = FALSE; 
    } 

    if ($data['status'] === FALSE) { 
     echo json_encode($data); 
     exit(); 
    } 
} 

这是我的HTML

if (save_method == 'add') { 
      url = "<?php echo site_url('game/ajax_add') ?>"; 
     } else { 
      url = "<?php echo site_url('game/ajax_update') ?>"; 
     } 
var formData = new FormData($('#form')[0]); 

     $.ajax({ 
      url: url, 
      type: 'JSON', 
      data: formData, 
      async: false, 
      success: function (data) 
      { 
       if (data.status) //if success close modal and reload ajax table 
       { 
        $('#modal_form').modal('hide'); 
        reload_table(); 
       } else 
       { 
        for (var i = 0; i < data.inputerror.length; i++) 
        { 
         $('[name="' + data.inputerror[i] + '"]').parent().parent().addClass('has-error'); //select parent twice to select div form-group class and add has-error class 
         $('[name="' + data.inputerror[i] + '"]').next().text(data.error_string[i]); //select span help-block class set text error string 
        } 
       } 
       $('#btnSave').text('save'); //change button text 
       $('#btnSave').attr('disabled', false); //set button enable 
      }, 
      error: function (jqXHR, textStatus, errorThrown) 
      { 
       alert('Error adding/update data'); 
       $('#btnSave').text('save'); //change button text 
       $('#btnSave').attr('disabled', false); //set button enable 

      }, 
      cache: false, 
      contentType: false, 
      processData: false 
     }); 
+0

变化AJAX类型为 'POST' – Rijin

+0

并添加AJAX数据类型: 'JSON'。 – MAZux

$.ajax({ 
    type: 'POST', 
    url: url, 
    dataType: 'JSON', 
    contentType: 'application/json; charset=utf-8' 
})