在codeigniter

时间:2015-06-16 11:19:54

标签: javascript php jquery ajax codeigniter

这是我的代码。

 <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:

这里我没有收到姓名和电子邮件的帖子数据。有谁能建议我一个想法。

2 个答案:

答案 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;
}

信用Convert form data to JavaScript object with jQuery