所以在我的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>";
}
答案 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);
}