通过在 Codeigniter 中使用 jQuery Load 方法发布序列化数据


post serialized data through using jquery load method in 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>

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 对象