Bonjour, encore un problème avec ajax, que j'ai du mal à résoudre.
Un simple formulaire de contact (nom, email, message, code sécurité) que je voudrais traité en asynchrone .
Voilà mon code :

View

<?= form_open(base_url().'contact/',$attr = array('id'=>'contact'));?>
                            <p class="field">
                                <label for="nom">Quel est votre nom ?</label>
                                <input type="text" name="nom" id="nom">
                            </p>
                            <p class="field">
                                <label for="email">Comment puis je vous contacter ?</label>
                                <input type="text" name="email" id="email">
                            </p>
                            <p class="field">
                                <label for="message">Comment puis je vous aider ?</label>
                                <textarea name="message" id="message"></textarea>
                            </p>
                            <?php $secur = rand(1,20);?>
                            <input type="hidden" name="secur_ask" value="<?= $secur;?>">
                            <p class="field">
                                <label for="secur">Indiquer le nombre <strong><?= $secur;?></strong><img src="<?= base_url();?>img/asterix.png"></label>
                                <input id="secur" type="number" value="1" name="secur_answer" min="0" max="150">
                            </p>
                            <p class="field">
                                <input type="submit" value="Envoyer">
                            </p>
                            <?= form_close();?>

Controller

public function contact()
    {
        if(!empty($_POST'nom ']) && !empty($_POST'email']) && !empty($_POST'message']))
        {
            extract($_POST);
            $corps = $nom.' vous a contacter : '.$message;
            mail('derepas.benjamin@gmail.com', 'Contact depuis le site', $corps);
        }
        $data'categories'] = $this->category_model->get_all_categories();
        $this->load->view('front/contact',$data);   
    }

script

$(document).ready(function(){
    var form = $("form#contact");
        $(form).submit(function(){
                number = $(this).find("input[name=secur_ask]").val();
                answer = $(this).find("input[name=secur_answer]").val();    
                var keys = [number,answer];
                if(number != answer)
                {
                    alert('Code de sécurité incorrect !');
                    return false;
                }
                else
                {
                    $.ajax({
                            url: '<?= current_url();?>',
                            type: 'post',
                            data: keys,
                            success: function (){
                                alert('Email envoyé !');
                            }
                        });
                    return false;
                }

        });
});

Je ne sais pas si c'est au niveau du php que ça plante ou du js, mais il m'alert comme quoi le mail est envoyé, pourtant ce n'est pas le cas ... une explication ?

4 réponses


antho07
Réponse acceptée

Par ailleurs, parvient tu deja à envoyer des mails par php ? (a voir si la config est bonne de ce coté là aussi)

Benjamin Derepas
Auteur
Réponse acceptée
var keys = [number,answer];

Bref, de ce que je vois là, je n'envois pas les données du formulaire à la méthode "methode"

Bonjour,

Ton script est-il inclu directement dans ta page php ? ou dans un fichier chargé dans la page?

Dans ma vue directement ... Et oui j'arrive à envoyer des mails depuis MAMP (local )