[RESOLU] Problème lors de l'envoi du formulaire

Répondre


Cette question est un moyen d’empêcher des soumissions automatisées de formulaires par des robots.
Smileys
:D :) :( :o :shock: :? 8-) :lol: :x :P :oops: :cry: :evil: :twisted: :roll: :wink: :!: :?: :idea: :arrow: :| :mrgreen: =D> #-o =P~ :^o :non: :priere: 8-|
Voir plus de smileys
  Revue du sujet
 

  Étendre la vue Revue du sujet : [RESOLU] Problème lors de l'envoi du formulaire

Re: Problème lors de l'envoi du formulaire

par subzeros » 17 janv. 2019, 21:53

Merci bien j'ai rajouter un dataType: 'json' et cela fonctionne merci beaucoup pour ton aide ;)

Re: Problème lors de l'envoi du formulaire

par or 1 » 17 janv. 2019, 20:16

Re: Problème lors de l'envoi du formulaire

par subzeros » 17 janv. 2019, 20:07

Merci pour ta réponse j'ai fait comme tu ma dit pour le echo json_encode($arrResult); J'ai donc fait une alert(data) je reçoit bien comme réponse {"response":"success"}.

Mais quand je met une alert(data.response); cela me met un undefined et sa pose problème parce que j'utilise if (data.response == 'success') dans mon fichier JS.

Re: Problème lors de l'envoi du formulaire

par or 1 » 17 janv. 2019, 19:59

il n'y a pas de
echo json_encode($arrResult);
après
$arrResult = array ('response'=>'success');
donc cela ne renvoie rien à l'ajax.

un seul
echo json_encode($arrResult);
suffit (après le dernier if), vu que quelque chose est renvoyé dans tous les cas des if.

Problème lors de l'envoi du formulaire

par subzeros » 17 janv. 2019, 19:50

Bonjour,

J'ai donc un problème lors de l'envoi de mon formulaire je vous explique.

Le but et d’enregistrer les informations dans un fichier a partir d'un formulaire en utilisant ajax (Jquery). J'ai donc mon formulaire qui est comme ceci (Ne sera pas en entier pour l'exemple)

Informations : Le formulaire est bien envoyé puisque les informations sont bien enregistrer dans le fichier
<form id="config-form" action="/ajax/config-form.php" class="form-horizontal form-bordered" method="post">
<input type="hidden" name="action" value="send" />
 
<div class="contact-form-success alert alert-success d-none mt-4" id="contactSuccess">
<strong>Succès!</strong> La configuration a été enregistrée.
</div>
 
<div class="contact-form-error alert alert-danger d-none mt-4" id="contactError">
<strong>Erreur!</strong> Un problème est survenue lors de l'enregistrement de la configuration.
<span class="mail-error-message text-1 d-block" id="mailErrorMessage"></span>
</div>
 
<input type="text" class="form-control" id="nom_entreprise" name="nom_entreprise" value="">
 
<input type="text" class="form-control" id="slogan_entreprise" name="slogan_entreprise" value="">
 
<input type="submit" value="Enregistrer" class="btn btn-primary btn-modern" data-loading-text="Chargement...">
 
</form>
Voici mon fichier javascript
(function($) {
     
    $('#config-form').each(function(){
        $(this).validate({
            submitHandler: function(form) {
 
                var $form = $(form),
                    $messageSuccess = $form.find('.contact-form-success'),
                    $messageError = $form.find('.contact-form-error'),
                    $submitButton = $(this.submitButton),
                    $errorMessage = $form.find('.mail-error-message'),
                    submitButtonText = $submitButton.val();
 
                $submitButton.val( $submitButton.data('loading-text') ? $submitButton.data('loading-text') : 'Chargement...' ).attr('disabled', true);
 
                // Fields Data
                var formData = $form.serializeArray(),
                    data = {};
 
                $(formData).each(function(index, obj){
                    data[obj.name] = obj.value;
                });
 
                // Ajax Submit
                $.ajax({
                    type: 'POST',
                    url: $form.attr('action'),
                    data: data
                }).always(function(data, textStatus, jqXHR) {
 
                    $errorMessage.empty().hide();
 
                    if (data.response == 'success') {
 
                        $messageSuccess.removeClass('d-none');
                        $messageError.addClass('d-none');
 
                        // Reset Form
                        $form.find('.form-control')
                            .val('')
                            .blur()
                            .parent()
                            .removeClass('has-success')
                            .removeClass('has-danger')
                            .find('label.error')
                            .remove();
 
                        if (($messageSuccess.offset().top - 80) < $(window).scrollTop()) {
                            $('html, body').animate({
                                scrollTop: $messageSuccess.offset().top - 80
                            }, 300);
                        }
 
                        $form.find('.form-control').removeClass('error');
 
                        $submitButton.val( submitButtonText ).attr('disabled', false);
                         
                        return;
 
                    } else if (data.response == 'error' && typeof data.errorMessage !== 'undefined') {
                        $errorMessage.html(data.errorMessage).show();
                    } else {
                        $errorMessage.html(data.responseText).show();
                    }
 
                    $messageError.removeClass('d-none');
                    $messageSuccess.addClass('d-none');
 
                    if (($messageError.offset().top - 80) < $(window).scrollTop()) {
                        $('html, body').animate({
                            scrollTop: $messageError.offset().top - 80
                        }, 300);
                    }
 
                    $form.find('.has-success')
                        .removeClass('has-success');
                         
                    $submitButton.val( submitButtonText ).attr('disabled', false);
 
                });
            }
        });
    });
     
}).apply(this, [jQuery]);
Et voici mon fichier PHP pour le traitement
header('Content-type: application/json');
 
foreach($_POST as $label => $value)
{
//-- ......
}
 
$contenu = 'Ce que je veut enregistrer';
 
if (isset($_POST["action"]) && $_POST["action"] == "send")
{
    $fileconfig = $_SERVER['DOCUMENT_ROOT'] . '/includes/config.php';
    //-- Assurons nous que le fichier est accessible en écriture
    if (is_writable($fileconfig))
    {
        //-- Assurons nous que le fichier existe
        if (file_exists($fileconfig))
        {
            $fp = fopen($fileconfig, 'w');
            fwrite($fp, $contenu);
            fclose($fp);
 
            $arrResult = array ('response'=>'success');
        }
        else
        {
            $arrResult = array ('response'=>'error','errorMessage'=>'Le fichier config n\'existe pas.');
            echo json_encode($arrResult);
        }
    }
    else
    {
        $arrResult = array ('response'=>'error','errorMessage'=>'Le fichier config n\'est pas accessible en écriture!');
        echo json_encode($arrResult);
    }
}
else
{
    $arrResult = array ('response'=>'error','errorMessage'=>'Une erreur est survenu lors de l\'envoi du formulaire.');
    echo json_encode($arrResult);
}
Donc comme je disait ci-dessus le formulaire s'envoi bien, les informations sont bien enregistrer dans mon fichier config.php. Mais lorsque je clique sur mon bouton de mon formulaire j'ai mon message qui apparait "Un problème est survenue lors de l'enregistrement de la configuration." qu'on retrouve dans mon fichier html.

J'ai essayer de mettre une alert(data.response) dans mon fichier javascript juste avant le if (data.response == 'success') { mais le alert me dit undefined, je ne comprend pas trop :(

Comment savoir ou est le problème, merci pour vos futurs réponses, en espérant avoir été le plus claire possible dans mon explication. ;)