1

我正在 Codeigniter 中实现一个 ajax 联系表单。似乎无法弄清楚我的问题是什么。通过 Firebug 运行脚本时,jquery.min.js 中有一个 POST 错误,这似乎没有多大意义。也许我缺少语法错误?

这是我的ajax JS:

$(document).ready(function() {

    //Ajax contact form
    $('#submit').click(function() {

        var form_data = {
            first_name : $('.first_name').val(),
            last_name : $('.last_name').val(),
            email : $('.email').val(),
            message : $('.message').val(),
            ajax : '1'
        };
        $.ajax({
            type : 'POST',
            url : "http://localhost/web/hfs/home/contact",
            async : false,
            data : form_data,

            success : function(msg) {
                $('#left-container.thankyou').html(msg);

            }
        });
        // end ajax
        return false;
    });
});

这是我的控制器功能:

public function contact() {
    if ($this -> input -> post('ajax') == '1') {
        $this -> form_validation -> set_rules('first_name', 'First Name', 'required|min_length[1]');
        $this -> form_validation -> set_rules('last_name', 'Last Name', 'required|min_length[1]');
        $this -> form_validation -> set_rules('email', 'Email', 'required|valid_email');
        $this -> form_validation -> set_rules('message', 'Message', 'required|min_length[5]');
        $this->form_validation->set_message('required', 'Please fill in the fields');

        if ($this -> form_validation -> run() == FALSE) {
            echo validation_errors();
        } else {
            echo "Thanks for contacting!";
        }
    }
}
4

1 回答 1

0

这行得通。监听表单上的提交事件并使用data : $(this).serialize().

<html>
    <head>
        <title>Test</title>
        <script src="//ajax.googleapis.com/ajax/libs/jquery/1.8.3/jquery.min.js"></script>
    </head>
    <body>
    <form id="myform">
        <input type="text" name="a" value="Some value in A" id="a" />
        <input type="text" name="b" value="Some value in B" id="b" /></div>
        <input type="submit" value="Submit" />
    </form>
    <p id="thankyou"></p>

    <script type="text/javascript">
        $(document).ready(function() {
            $("#myform").submit(function() {
                $.ajax({
                    type : 'POST',
                    url : "http://localhost/web/hfs/home/contact",
                    async : false,
                    data : $(this).serialize(),
                    success : function(msg) {
                        $('#thankyou').html(msg);

                    }
                });

                return false;
            });
        });
    </script>
    </body>
</html>
于 2012-11-28T12:32:36.260 回答