这是我的代码。
<form id='user'>
<label for="name">Name :</label>
<input type="text" id="name" name="name"/>
<label for="email">Email :</label>
<input type="text" id="email" name="email"/>
<input type="submit"/>
</form>
<div id="output"></div>
jQuery的:
$('#user').on('submit',function(event){
event.preventDefault();
var data=$(this).serialize();
adddetails(data);
});
function adddetails(data){
var url='http://localhost/projectname/index.php/users/adddat';
$("#output").load(url,data,function(response,status){
});
}
在&#39;用户&#39;控制器
function adddat(){
$name=$this->input->post('name');
$email=$this->input->post('email');
echo "name: ".$name." and email: ".$email;
}
这里当我点击提交时,输出div就像这样显示
name: and email:
这里我没有收到姓名和电子邮件的帖子数据。有谁能建议我一个想法。
答案 0 :(得分:2)
使用JQuery的加载函数(JQuery API)
如果数据作为对象提供,则使用POST方法;否则,假设GET。
Per JQuery对serialize函数的定义
.serialize()方法使用标准的URL编码表示法创建文本字符串。
也就是说,假设GET是在尝试获取POST变量,因为它不是传递给load
函数的对象,而是一个字符串。
尝试使用
$this->input->get('parameter_name')
作为旁注,您可以将数据点作为函数参数获取:function addat($name, $email){
,因为codeigniter通常会接受获取GET参数的方法。
答案 1 :(得分:1)
序列化方法创建一个字符串输出。要进行POST调用,您需要使用JSON对象。
$('#user').on('submit',function(event){
event.preventDefault();
var data=formToJSON('#user');
adddetails(data);
});
function adddetails(data){
var url='http://localhost/projectname/index.php/users/adddat';
$("#output").load(url,data,function(response,status){
});
}
function formToJSON( selector )
{
var form = {};
$(selector).find(':input[name]:enabled').each( function() {
var self = $(this);
var name = self.attr('name');
if (form[name]) {
form[name] = form[name] + ',' + self.val();
}
else {
form[name] = self.val();
}
});
return form;
}