我正在尝试创建一封发送电子邮件的联系表单。我正在使用jquery ajax。 我的问题是如何将表单值从jquery ajax传递给codeigniter函数? 这是我的html表单:
<form id="ph-form">
<input type="text" name="name" placeholder="Name*" id="name" />
<input type="email" name="email" placeholder="Email*" id="email" />
<input type="text" name="subject" placeholder="Subject*" id="subject" />
<textarea name="message" placeholder="Messaage*" id="message" ></textarea>
<input type="submit" name="send_message" value="Send Message" id="submit_btn">
</form>
这是我的jquery ajax脚本:
<script type="text/javascript">
$('#submit_btn').click(function(){
var form_data = {
name : $('#name').val(),
email : $('#email').val(),
subject : $('#subject').val(),
message : $('#message').val(),
ajax : '1'
};
$.ajax({
type : 'POST',
url : '<?= $this->config->site_url().$this->uri->uri_string() ?>',
async : false,
data : form_data,
success : function(data){
alert("wew success!");
}
});
return false;
});
</script>
最后我的控制器:
public function test($view){
switch($view){
case 'contact1':
$this->load->view('ph-contact1');
break;
case 'contact2':
$this->load->view('ph-contact2');
break;
case 'contact3':
$this->load->view('ph-contact3');
break;
default:
$this->load->view('ph-contact1');
break;
}
if($this->input->post('ajax') == '1'){
echo "<script>alert(".$this->input->post('name').")</script>";
}
}
我不确定ajax是否有效且我没有表单验证。
答案 0 :(得分:0)
首先更改输入&#34;提交&#34;到&#34;按钮&#34;防止页面刷新。
<input type="button" name="send_message" value="Send Message" id="submit_btn">
然后网址将
url : "<?= site_url().'your_controller_name/test'; ?>",
这将是您的控制器功能测试的发布数据,然后您通过$this->input->post('ajax')
获得发布数据。对于调试,您可以通过浏览器的检查元素
答案 1 :(得分:0)
您的代码可以通过ajax
将值传递给控制器您可以单独获取表单值,例如
$this->input->post('name');
$this->input->post('email');
$this->input->post('subject');
$this->input->post('message');
另外,请确认您所请求的网址是否指向给定控制器,或者不是您浏览的控制台。
希望这会对你有所帮助。如果您仍然遇到任何问题,请告诉我。