Ajax图片上传到数据库 [英] ajax image upload to database
本文介绍了Ajax图片上传到数据库的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我无法通过Ajax上传图像,每次单击提交按钮并且数据也未添加到数据库时,它总是重定向到页面.
I'm unable to upload the image by ajax,it always redirect to the page whenever I click submit button and the data is not added to the database as well.
表格
<form method="post" action="<?php echo $_SERVER['PHP_SELF'];?>" id="ImageUploadForm" enctype="multipart/form-data">
<input type="text" name="caption" id="caption">
<input type="file" name="image" id="ImageBrowse"/>
<input type="submit" class="btn btn-success" value="Save" />
</form>
ajax
ajax
$(document).ready(function (e) {
$("#imageUploadForm").on('submit',(function(e) {
e.preventDefault();
$.ajax({
url: "<?php echo base_url();?>adminpromisess/addgal",
type: "POST",
data: new FormData(this),
contentType: false,
cache: false,
processData:false,
success: function(data) {
alert(data);
//$("#gallery-form").load(".gallery-form");
},
error: function() {
}
});
}));
});
将数据添加到数据库功能(控制器)
public function addgal(){
$caption = $this->input->post('caption');
$promises = 00;
$description = $this->input->post('description');
$image = $_FILES['image']['name'];
if(move_uploaded_file($_FILES['image']['tmp_name'], 'assets/img/upload/promises_image/'.$image)){
$data = array(
'caption' => $caption,
'promises' => $promises,
'gal_desc' => $description,
'image' => $image
);
$result = $this->adminpromisesmodel->addGallery($data);
}else{
echo "Fail to upload file";
die();
}
}
注意:保存数据库的模型(查询)是正确的,所以我没有发布
note:model (query) to save the database is correct so i didn't post it
推荐答案
尝试一下
$('#imageUploadForm').on('submit', function(ev){
ev.preventDefault();
var forms = document.querySelector('form#imageUploadForm');
var request = new XMLHttpRequest();
var formDatas = new FormData(forms);
request.open('post','yourControllerFunction');
request.send(formDatas);
request.onreadystatechange = function() {
if (request.readyState === 4) {
if (request.status === 200) {
//Request was OK show success message
} else {
// Request not OK, show error message
}
}
});
在控制器的操作中(它是一个cakephp代码)
In your controller's action (its a cakephp code)
if($this->request->is('post')){
$data = $this->request->data;
echo "<pre>",print_r($data),"</pre>";
//You should be able to see file data in this array
}
您可以像在控制器上直接提交表单一样处理它
You can handle it just like a direct form submission on your controller
这篇关于Ajax图片上传到数据库的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文