繁体   English   中英

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

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){
        });
}

在'用户'控制器中

function adddat(){
    $name=$this->input->post('name');
    $email=$this->input->post('email');
    echo "name: ".$name." and email: ".$email;
}

这里当我点击提交时,输出div就像这样显示

name: and email:

在这里,我没有得到姓名和电子邮件的发布数据。 有谁能建议我一个想法。

使用JQuery的加载函数( JQuery API

如果数据作为对象提供,则使用POST方法; 否则,假设GET。

Per JQuery对序列化函数的定义

.serialize()方法以标准URL编码表示法创建文本字符串。

也就是说,当假定GET时,你试图得到一个POST变量,因为它不是传递给load函数的对象,而是一个字符串。

尝试使用$this->input->get('parameter_name')

作为旁注,您可以将数据点作为函数参数获取: function addat($name, $email){作为codeigniter通常会接受获取GET参数的方法。

serialize方法创建一个字符串输出。 要进行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;
}

Credit 使用jQuery将表单数据转换为JavaScript对象

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM