所以在我的Javascript中我使用表单序列化输出是正确的
(issubmit=1&username=tester&password=test&cpassword=test&firstname=sdfds&lastname=fsdfdsf&gender=&email=pie%40aol.com&phone=&address=&phone=&address=)
当我尝试将其传递给 Controller 时,我什么也没得到,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);
}
});
Controller :
function submit_form() {
$data = $this->input->post('dataString');
echo "<p>result= ".$data."</p>";
}
最佳答案
您的 Controller 似乎正在检查名为“dataString”的 post 参数。但这个参数似乎没有在你的ajax请求中发送。当您序列化表单时,它会将所有表单字段组合成一个 url 编码的字符串。这里没有引用“dataString”参数。
您可能想要在表单中执行的操作是包装每个输入字段的名称属性,如下所示:
<input type="text" name="dataString[username]" value="" />
<input type="text" name="dataString[password]" value="" />
完成此操作后,我相信您应该能够在 Controller 中检查名为“dataString”的参数。它应该是一个包含键/值格式的所有字段的数组。例如
function submit_form() {
$data = $this->input->post('dataString');
echo var_dump($data);
}
关于php - 将表单数据传递给 Controller ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16126589/