Frage

Ein paar Fragen:

Ich bin mit CI und JQuery AJAX.

In meinem Code unten, montiere ich dataString, die standardmäßig auf die URL als Query-String angehängt wird.

Ich habe die AJAX "Typ" zu POST geändert, so meine Frage ist - wie kann ich Zugang dataString in meinem CI app

Es scheint, ich habe noch zu verwenden

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

Was ich macht dataString redundante Einstellung?

-

Ich habe versucht, die Suche kann aber nicht wirklich etwas Konkretes finden.

Wäre es möglich, noch die Verwendung von CIs Validierung Bibliothek und AJAX machen?

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

Normalerweise würden Sie das Kontaktformular neu laden oder den Benutzer umleiten. In einer idealen Welt würde ich die Fehlermeldungen wie den Benutzer angezeigt werden.

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

hofft, dass ich klar genug bin - wenn jemand ein anständiges Beispiel eines CI Kontaktformular hat, die groß sein würde. es gibt gemischte Material auf dem Internet, aber nichts, das alle Felder trifft.

Dank

War es hilfreich?

Lösung

Wie ich in den Kommentaren geschrieben, Sie brauchen kein dataString zu setzen, da jQuery es für Sie tun können:

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

Andere Tipps

Wenn Sie die Verwendung von jQuery $ .post () Funktion können Sie explizit den Namen POST-Variablen, greifen sie dann in Ihrem Controller so, wie Sie in Ihrer Frage vorgeschlagen.

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

Ihr Controller:

$this->input->post('my_name');
$this->input->post('my_company');
//etc
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top