当我通过静态时,它将成功存储在数据库中。当我传递动态数据时,它不会存储在数据库中。在我的视图中,表单id为 signupform ,其中包含5个字段。
这是我的.js文件
$(document).on("submit","#signupform",function(e){
e.preventDefault();
//var view_id=$("#id_hid").val();
//alert(view_id);
console.log($('#signupform').serialize());
var data = {'username' : 'username' , 'password' : 'password' , 'email' : 'email' , 'mobileno' : 'mobileno' , 'address' : 'address' };
data = $('#signupform').serialize() + '&' + $.param(data);
$.ajax({
type:"POST",
data:data,//$('#signupform').serialize(),
dataType: "JSON",
url:"../welcome/add",
success:function(data){
//var json=$.parseJSON(data);
//$('#signupform').html(response);
alert(data);
}
});
});
**这是我的控制器文件**
public function add(){
$data=array();
$postData=array();
//prepare post data
$postData = array(
'username' => $this->input->post('username'),
'password' => $this->input->post('password'),
'email' => $this->input->post('email'),
'mobileno' => $this->input->post('mobileno'),
'address' => $this->input->post('address')
);
//print_r($postData);
//insert post data
$insert = $this->home_model->insert_form($postData);
$data['msg']= "data insert successfully";
echo json_encode($data['msg']);
}
这是我的模型文件
function insert_form($data){
$insert=$this->db->insert('emp',$data);
if($insert){
return $this->db->insert_id();
} else {
return false;
}
echo json_encode($data);
}
答案 0 :(得分:1)
如果您想发布字符串数据,可以删除dataType: "JSON"
或者您可以使用此方法
$(document).on('submit', '#signupform', function (e) {
e.preventDefault();
var data = {username: 'username', password: 'password', email: 'email', mobileno: 'mobileno', address: 'address'};
data = Object.assign({}, $('#signupform').serializeArray()[0], data);
console.log(data);
$.post('your backend url', data, function (result) {
console.log(result);
})
})
答案 1 :(得分:1)
您不需要定义data
对象。 serialize()
方法会为您做到这一点。但是,因为您正在发布POST,所以应该使用serializeArray()
。 serialize()
面向GET请求。
$(document).on("submit","#signupform",function(e){
var data;
e.preventDefault();
data = $('#signupform').serializeArray();
$.ajax({
type:"POST",
data:data,
dataType: "JSON",
url:"../welcome/add",
success:function(data){
//data is an object. If you want the text returned use data.msg
//$('#some-message-div').text(data.msg);
console.log(data); //an object with one property - 'msg'
}
});
});
控制器方法可以简化很多。由于字段名称与表列名称完全匹配,因此无需构建$postData
数组。发布的数据已经具有确切的结构。 $this->input->post()
将返回您需要的内容。
public function add()
{
//insert post data
if($this->home_model->insert_form($this->input->post()))
{
$data['msg'] = "data insert successfully";
}
else
{
$data['msg'] = "insert failed";
}
echo json_encode($data);
}
模型可以更清洁。
function insert_form($data)
{
if($this->db->insert('emp', $data))
{
return $this->db->insert_id();
}
//don't need else when the if condition calls return
return false;
}
echo json_encode($data);
行无用。编码行的方式从未执行 - 返回if和else块。即使它确实执行了,模型也是错误的。