我有一個帶有文本框和文件上傳的窗體。當用戶點擊按鈕。將文本框的值和將文件上傳名稱保存到數據庫並將文件上傳到服務器。我沒有經驗使用AJAX做。所以,非常感謝任何幫助。如何在CodeIgniter 3.0中使用AJAX上傳文件?
這是我的形式:
<form enctype="multipart/form-data" accept-charset="utf-8" name="f_complaint" id="f_complaint">
<input type="text" name="i_complaint" id="id_complaint" class="cl_complaint" />
<input type="file" name="i_file" id="id_file" class="cl_file" />
<input type="button" id="btn_upl" value="Save your complaint" class="btn btn-primary" />
</form>
這是我的AJAX:
<script src="<?php echo base_url('assets/inspinia/js/jquery-2.1.1.js'); ?>"></script>
<script src="<?php echo base_url('assets/jquery-ui/jquery-ui.js'); ?>"></script>
<script type="text/javascript">
$(document).ready(function() {
var url = "<?php print base_url(); ?>complaint/saveadd";
$('#btn_upl').on('click', function() {
var formData = new FormData($(this).parent('form')[0]);
//alert(url);
$.ajax({
url : url,
type : 'POST',
data : formData,
success : function (returndata) {
alert(returndata);
}
});
});
});
</script>
這是我的控制器:
public function saveadd() {
$config['upload_path'] = FCPATH."assets/uploads/";
$config['max_size'] = '307200';
$config['file_name'] = "FILE - ".$_FILES['i_file']['name'];;
$config['overwrite'] = TRUE;
$this->load->library('upload', $config);
$this->upload->initialize($config);
if (! $this->upload->do_upload('i_file')) {
//return false;
redirect('app/');
} else {
redirect('complaint/add');
}
}
什麼是錯的代碼?即使警報不被解僱。我不想使用插件
控制檯中的任何錯誤?該網址看起來不正確,據我瞭解,它需要一個完整的路徑 –
@SergioAlen沒有錯誤 – Shota
我在其他項目(也具有上傳文件,但不使用ajax)使用相同的網址,它工作正常 – Shota