这是我的代码。
<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>
j查询:
$('#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){
});
}
在"用户"控制器中
function adddat(){
$name=$this->input->post('name');
$email=$this->input->post('email');
echo "name: ".$name." and email: ".$email;
}
在这里,当我单击提交时,输出div如下所示
name: and email:
在这里,我没有获得姓名和电子邮件的帖子数据。谁能给我一个想法。
使用 JQuery
的 load function (JQuery API)
如果数据作为对象提供,则使用 POST 方法;否则,假定为 GET。
根据 JQuery 对序列化函数的定义
.serialize() 方法以标准 URL 编码的表示法创建文本字符串。
也就是说,当假定 GET 时,您正在尝试获取 POST 变量,因为它不是传递给 load
函数的对象,它是一个字符串。
尝试使用 $this->input->get('parameter_name')
旁注,您可以获取数据点作为函数参数:function addat($name, $email){
作为编码点火器通常会接受获取GET参数的方法。
序列化方法创建字符串输出。 要进行 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;
}
信用 使用 jQuery 将表单数据转换为 JavaScript 对象