1

几个问题:

我正在使用 CI 和 JQuery AJAX。

在下面的代码中,我 assemble dataString,默认情况下,它作为查询字符串附加到 URL。

我已将 AJAX“类型”更改为 POST,所以我的问题是 - 如何dataString在我的 CI 应用程序中访问?

看来我还是得用

$name=$this->input->post('name')

对我来说,哪个让设置变得dataString多余?

--

我试过搜索,但找不到任何具体的东西。

是否仍然可以使用 CI 验证库和 AJAX?

if($this->form_validation->run() == FALSE)
{
    // what can i return so that my CI app shows errors?
}

通常,您会重新加载联系表单或重定向用户。在理想的世界中,我希望向用户显示错误消息。

查询:

    $(document).ready(function($){
        $("#submit_btn").click(function(){
            var name = $("input#name").val();
            var company = $("input#company").val();
            var email = $("input#email").val();
            var phone = $("input#phone").val();
            var message = $("textarea#message").val();
            var dataString = 'name=' +  name + '&message=' + message + '&return_email=' + email + '&return_phone=' +
            phone + '&company=' + company;
            var response = $.ajax({
                type: "POST",
                url: "newsite/contact_ajax/",
                data: dataString
            }).responseText;

            //$('#contact').hide();
            //$('#contact').html('<h5>Form submitted!  Thank you!</h5><h4>We will be in touch with you soon.</h4>');
            //$('#contact').fadeIn('slow');
            return false;
        });  
    });

希望我已经足够清楚了-如果有人有一个不错的 CI 联系表示例,那就太好了。互联网上有各种各样的东西,但没有什么能击中所有的盒子。

谢谢

4

2 回答 2

4

正如我在评论中所写,您不需要设置 a ,dataString因为 jQuery 可以为您完成:

$(document).ready(function($){
    $("#submit_btn").click(function(){
        var response = $.ajax({
            type: "POST",
            url: "newsite/contact_ajax/",
            data: $(your_form_id).serialize()
        }).responseText;

        //$('#contact').hide();
        //$('#contact').html('<h5>Form submitted!  Thank you!</h5><h4>We will be in touch with you soon.</h4>');
        //$('#contact').fadeIn('slow');
        return false;
    });  
});
于 2011-01-05T18:11:38.367 回答
3

如果您使用 jQuery $.post()函数,您可以显式命名 post 变量,然后按照您在问题中建议的方式在控制器中访问它们。

 $.post("<?php echo site_url("newsite/contact_ajax/";?>",
        {my_name:name,my_company:company,my_email:email,my_phone:phone,my_message:message},
        function(){
              //callback function
         },    
         html
      );

在您的控制器中:

$this->input->post('my_name');
$this->input->post('my_company');
//etc
于 2011-01-05T13:48:10.937 回答