你如何用CodeIgniter进行jquery序列化?

时间:2012-06-07 15:18:50

标签: jquery ajax codeigniter serialization post

我正在使用jQuery和CodeIgniter来执行此操作。好吧基本上我有一个注册表格,要求用户输入用户名,密码和电子邮件。提交表单后,jQuery将序列化表单并将其提供给进程页面,在控制器中回显值,然后javascript将提醒原始视图中的post值。到目前为止它没有用。什么都没有被警告。这是我的代码:

(控制器) register.php:

    <?php if (!defined('BASEPATH'))
        exit('No direct script access allowed');

    class Register extends CI_Controller
    {
        public function step1()
        {
        $this->load->view('registration_step1');
        }
        public function step1_process(){
        var_dump($_POST);
        }
        public function step2()
        {
        $this->load->view('registration_step2');
        }
        public function step3()
        {
        $this->load->view('registration_step3');
        }
    }

(视图的一部分) registration_step1.php:

        <form style="margin-top: 100px;" class="registerbox">
        <h2>User Info:</h2>
        <input type="text" name="username" placeholder="Username" style="height:35px; width: 300px;font-size:20px;"/> <br />
        <input type="text" name="email" placeholder="Email" style="height:35px; width: 300px;font-size:20px;"/><br />
        <input type="password" name="password" placeholder="Password" style="height:35px; width: 300px;font-size:20px;"/><br />
        <input type="submit" class="btn btn-success" style="height:35px; width: 310px;font-size:20px;margin-bottom:5px;" value="Next &raquo;"/><br />
        </form>

(javascript)registration.js:

     $(document).ready(function() {
        $(".registerbox").submit(function() { 
              var userinfo = $(".registerbox").serialize();
              return false;
               $.post("register/step1_process", {
               userinfo : userinfo
              },
            function(data) {
                alert(data);
            });
        });
     });

2 个答案:

答案 0 :(得分:1)

在你的html标记中,在<head>的某个地方,你应该输入类似的内容:

<script type="text/javascript">
    var base_url = '<?php echo base_url(); ?>';
</script>

然后在registration.js中,更改您的网址并在返回之前执行post

$(document).ready(function() {
    $(".registerbox").submit(function() { 
        var userinfo = $(".registerbox").serialize();
        $.post(base_url + "register/step1_process", {
            userinfo : userinfo
        }, function(data) {
            console.log(data);
        });
        return false;
    });
});

答案 1 :(得分:0)

您只需将帖子网址更改为:

'your-controller/your-function'
在你的情况下,它将是:

'register/step1'

您还需要更改发送数据的方式。 jquery期望一个'数据'对象。所以完整的帖子应该是。

    $.post("register/step1", {
           data : userinfo
          },
        function(data) {
            alert(data);
        });

关于jQuery帖子的更多信息: http://api.jquery.com/jQuery.post/