如何将表单值从jquery ajax传递到codeigniter控制器


How to pass form values from jquery ajax to codeigniter controller?

我正在尝试创建一个发送电子邮件的联系表单。我正在使用jquery ajax。我的问题是如何将表单值从 jquery ajax 传递给代码点火器函数?这是我的 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 是否正常工作,我没有表单验证。

首先将输入"提交"更改为"按钮"以防止页面刷新。

<input type="button" name="send_message" value="Send Message" id="submit_btn">

然后网址将是

url : "<?= site_url().'your_controller_name/test'; ?>",

这将是在控制器功能测试中发布数据,然后通过$this->input->post('ajax')获取发布数据。 对于调试,您可以通过浏览器的检查元素使用控制台

你的代码看起来可以通过 ajax 将值传递给你的控制器

您可以单独获取表单值,例如

$this->input->post('name');
$this->input->post('email');
$this->input->post('subject');
$this->input->post('message');

另外,请确认您请求的 url 是否指向给定的控制器,是否来自浏览控制台。

希望这对您有所帮助。如果您仍然面临任何问题,请告诉我。