将表单数据传递给Controller

时间:2013-04-21 00:06:58

标签: php javascript jquery ajax codeigniter

所以在我的Javascript中我使用表单序列化输出是正确的

  

(issubmit = 1&安培;用户名=测试器&安培;密码=试验&安培; cpassword =试验&安培;姓名= sdfds&安培;姓= fsdfdsf&安培;性别=安培;电子邮件=馅饼%40aol.com&安培;电话=安培;地址=&安培;电话= &安培;地址=)

当我尝试将其传递给我的控制器时,我什么都没得到,result = ""。我做错了什么?

Jquery的:

var dataString = $("form").serialize();
    $.ajax({
        url: '<?php echo base_url();?>index.php/welcome/submit_form/',
        async: false,
        type: 'POST',
        data: dataString,
        dataType: 'html',
        success: function(data) {
        $('#ajax-content-container').html(data);
    }
});

控制器:

function submit_form() {
    $data = $this->input->post('dataString');
    echo "<p>result= ".$data."</p>";
}

1 个答案:

答案 0 :(得分:2)

您的控制器似乎正在检查名为'dataString'的post参数。但是这个参数似乎没有在你的ajax请求中发送。在序列化表单时,它将所有表单字段组合成一个url编码的字符串。这里没有引用'dataString'参数。

您可能希望在表单中执行的操作包括每个输入字段的名称属性,如下所示:

<input type="text" name="dataString[username]" value="" />
<input type="text" name="dataString[password]" value="" />

执行此操作后,我相信您应该能够在控制器中检查名为“dataString”的参数。它应该是一个包含键/值格式的所有字段的数组。 E.g。

function submit_form() {
    $data = $this->input->post('dataString');
    echo var_dump($data);
}