AJAX modulo di contatto in CodeIgniter
-
25-09-2019 - |
Domanda
Alcune domande:
Sto usando CI e JQuery AJAX.
Nel mio codice qui sotto, monto dataString
, che per impostazione predefinita, viene aggiunto alla URL, una stringa di query.
Ho cambiato il "tipo" di AJAX POST, quindi la mia domanda è -? Come si fa dataString
accesso io nella mia CI app
Sembrerebbe che devo ancora uso
$name=$this->input->post('name')
Che per me, rende l'impostazione dataString
ridondante?
-
Ho provato a cercare ma non riesco davvero trovare nulla di concreto.
Sarebbe possibile fare ancora uso di convalida biblioteca CI e AJAX?
if($this->form_validation->run() == FALSE)
{
// what can i return so that my CI app shows errors?
}
Normalmente si dovrebbe ricaricare il modulo di contatto o reindirizzare l'utente. In un mondo ideale vorrei i messaggi di errore da mostrare all'utente.
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;
});
});
Spero Sono stato abbastanza chiaro - se qualcuno ha un esempio decente di un modulo di contatto CI che sarebbe grande. c'è roba mista su internet, ma niente che colpisce tutte le caselle.
grazie
Soluzione
Come ho scritto nei commenti, non è necessario impostare un dataString
dal jQuery può farlo per voi:
$(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;
});
});
Altri suggerimenti
Se si utilizza la funzione jQuery $ .post (), è possibile nominare esplicitamente il variabili pOST, quindi accedervi nel controller il modo in cui lei ha suggerito nella sua interrogazione.
$.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
);
nel controller:
$this->input->post('my_name');
$this->input->post('my_company');
//etc