formulaire de contact AJAX dans CodeIgniter
-
25-09-2019 - |
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
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