【问题标题】:AJAX contact form in CodeIgniterCodeIgniter 中的 AJAX 联系表单
【发布时间】:2011-06-03 23:58:42
【问题描述】:

几个问题:

我正在使用 CI 和 JQuery AJAX。

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

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

看来我还是得用

$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?
}

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

Jquery:

    $(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 联系表示例,那就太好了。互联网上有各种各样的东西,但没有什么能打到所有的盒子。

谢谢

【问题讨论】:

  • data: $(your_form_id).serialize(), ?

标签: jquery ajax codeigniter contact-form


【解决方案1】:

正如我在 cmets 中所写,您无需设置 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;
    });  
});

【讨论】:

  • 所以 dataString 严格来说是 GET 对吧?我想是有道理的。所以我只是以标准 CI 方式从表单变量中访问数据? data: 变成了一个临时的 POST 数组?谢谢~
  • 不,请阅读$.ajax,使用 $.ajax 时不要混淆您不再使用经典的表单提交(表单现在更像是数据持有者,如果 JS 是后备的话禁用)...浏览器正在提交给url,无论您提供什么,所以data 用于POSTGET 请求,serialize() 所做的只是节省您的时间和准备dataString 给你!
【解决方案2】:

如果您使用 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-06-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-03-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多