0

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

(issubmit=1&username=tester&password=test&cpassword=test&firstname=sdfds&lastname=fsdfdsf&gender=&email=pie%40aol.com&phone=&address=&phone=&address=)

当我尝试将它传递给我的控制器时,我什么也没得到,result = "". 我究竟做错了什么?

查询:

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>";
}
4

1 回答 1

2

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

您可能想要在表单中做的是像这样包装每个输入字段的 name 属性:

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

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

function submit_form() {
    $data = $this->input->post('dataString');
    echo var_dump($data);
}
于 2013-04-21T00:48:51.213 回答