Контактная форма AJAX в CodeIgniter - PullRequest
1 голос
/ 05 января 2011

Несколько вопросов:

Я использую CI и JQuery AJAX.

В приведенном ниже коде я собираю 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?
}

Обычно вы перезагрузите контактную форму или перенаправите пользователя. В идеальном мире я хотел бы, чтобы сообщения об ошибках показывались пользователю.

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;
        });  
    });

надеюсь, я был достаточно ясен - если у кого-нибудь есть приличный пример формы контакта с КИ, это было бы здорово. в Интернете есть смешанные вещи, но ничего, что поражает все коробки.

спасибо

Ответы [ 2 ]

4 голосов
/ 05 января 2011

Как я писал в комментариях, вам не нужно устанавливать 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;
    });  
});
3 голосов
/ 05 января 2011

Если вы используете функцию 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
...