Question

Quelques questions:

J'utilise CI et JQuery AJAX.

Dans mon code ci-dessous, j'assemble dataString, qui, par défaut, est ajouté à l'URL comme une chaîne de requête.

J'ai changé l'AJAX « type » à POST, donc ma question est - comment puis-je accéder à dataString dans mon application CI

Il semblerait que je dois encore utiliser

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

Ce qui me rend le réglage dataString redondant?

-

J'ai essayé la recherche mais ne peut pas vraiment trouver quelque chose de concret.

Serait-il possible de faire encore l'utilisation de la bibliothèque de validation et AJAX CIs?

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

Normalement, vous rechargez le formulaire de contact ou rediriger l'utilisateur. Dans un monde idéal, je voudrais que les messages d'erreur à afficher à l'utilisateur.

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

espère avoir été assez clair - si quelqu'un a un exemple décent d'un formulaire de contact de CI qui serait grande. il y a des choses mélangées sur internet, mais rien qui frappe toutes les cases.

Merci

Était-ce utile?

La solution

Comme je l'ai écrit dans les commentaires, vous n'avez pas besoin de définir un dataString car jQuery peut le faire pour vous:

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

Autres conseils

Si vous utilisez le jQuery $ .post () fonction, vous pouvez nommer explicitement la les variables de poste, les accès alors dans votre contrôleur la façon dont vous suggérez dans votre question.

 $.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
      );

Dans votre contrôleur:

$this->input->post('my_name');
$this->input->post('my_company');
//etc
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top