0
votes

Le formulaire JQuery Ajax Soumettre à PHP renvoie une réponse vide

J'essaie de soumettre un formulaire à PHP avec Ajax, donc je n'ai pas à recharger la page. Mais lorsque je clique sur le bouton Soumettre, PHP Post Array est vide et je ne peux obtenir aucune valeur lors de l'accès à des valeurs telles que: $ google_recaptcha = $ _Post ['recaptcha'] ?? ''; code>

Toute suggestion? P>

<form action="" method="post" id="appointment-form" class="login-form sign-in-form" data-toggle="validator">
    <div class="text_box row">
        <div class="col-lg-6">
            <input type="text" name="name" id="name" placeholder="Your Name *">
        </div>
        <div class="col-lg-6">
            <input type="email" name="email" id="email" placeholder="Your Email">
        </div>
    </div>
    <div class="text_box row">
        <div class="col-lg-6">
            <input type="text" name="phone" id="phone" placeholder="Mobile Number *">
        </div>
        <div class="col-lg-6">
            <input type="text" name="company" id="company" placeholder="Company">
        </div>
    </div>

    <div class="text_box row col-13">
        <select name="service" id="service" class="selectpickers col-12 col-lg-6 col-md-6 col-sm-6" style="margin: 5px;">
            <option value="">Select Service</option>
            <?php for ($i = 0; $i < count($services); $i++) { ?>
                <option value="<?php echo $i; ?>"><?php echo $services[$i]; ?></option>
            <?php } ?>
        </select>
        <select name="country" id="country" class="selectpickers col-12 col-lg-6 col-md-6 col-sm-6">
            <option value="">Select Country</option>
            <?php for ($j = 0; $j < count($countries); $j++) { ?>
                <option value="<?php echo $j; ?>"><?php echo $countries[$j]; ?></option>
            <?php } ?>
        </select>
    </div>
    <div class="text_box row col-13">
        <select name="day" id="day" class="selectpickers col-12 col-lg-6 col-md-6 col-sm-6" style="margin: 5px;">
            <option value="">Select a day</option>
            <?php for ($k = 0; $k < count($days); $k++) { ?>
                <option value="<?php echo $k; ?>"><?php echo $days[$k]; ?></option>
            <?php } ?>
        </select>
        <div class="help-block with-errors text-danger mt-2"></div>

        <select name="timing" id="timing" class="selectpickers col-12 col-lg-6 col-md-6 col-sm-6">
            <option value="">Select a time</option>
            <?php for ($h = 0; $h < count($timings); $h++) { ?>
                <option value="<?php echo $h; ?>"><?php echo $timings[$h]; ?></option>
            <?php } ?>
        </select>
    </div>

    <div class="form-group text_box">
        <textarea name="message" id="message" placeholder="Description..."></textarea>
    </div>
    <?php echo csrf_token_tag(); ?>
    <script src="https://www.google.com/recaptcha/api.js" async defer></script>
    <div class="g-recaptcha" data-sitekey="6Lf2c6gZAAAAABMI2STA9ciP9_kYr6dNV_uDeoD_"></div>
    <div class="d-flex justify-content-between align-items-center">
        <button type="submit" id="btn-submit" class="btn_three mt-4">Send Now</button>
    </div>
</form>


1 commentaires

Les commentaires ne sont pas pour une discussion prolongée; Cette conversation a été Déplacé pour discuter .


4 Réponses :


0
votes

Vous devez utiliser Data: {reCAPTCHA: grecaptcha.getresponse ()} code> pour la publier correctement.

Vous allez: P>

$(document).ready(() => {
    $("#appointment-form").on('submit', e => {
        e.preventDefault();
        console.log('Event triggered!');

        var name = $("#name").val();
        var email = $("#email").val();
        var phone = $("#phone").val();
        var company = $("#company").val();
        var service = $("#service").val();
        var country = $("#country").val();
        var day = $("#day").val();
        var timing = $("#timing").val();
        var message = $("#message").val();
        var csrfToken = $('input[name="csrf_token"]').val();

        $.ajax({
            type: 'post',
            url: 'private/shared/appointment_process.php',
            data: {"name": name, "email": email, "phone": phone, "company": company, "service": service, "country": country, "day": day, "timing": timing, "message": message, "csrfToken": csrfToken, "recaptcha": grecaptcha.getResponse()},
            success: (result) => {
                console.log('Got response back');
                console.log(result);
                if (result === "Success") {
                    $("#form-success").html('Message has been sent!');
                    $("#form-success").show();
                } else {
                    $("#form-error").html(result);
                    $("#form-error").show();
                }
            }
        });

    });
});


0 commentaires

0
votes

Ce n'est pas le champ de données supposé être formaté comme celui-ci avec type post-poste ..

Je pensais que les chaînes de requête ont été utilisées uniquement avec ... p>

$.ajax({
    type: 'post',
    url: 'private/shared/appointment_process.php',
    data: {
       "name" : name,
       "email" : email,
       "phone" : phone,
       "company" : company
    },
    success: (result) => {
        console.log('Got response back');
        console.log(result);
        if (result === "Success") {
            $("#form-success").html('Message has been sent!');
            $("#form-success").show();
        } else {
            $("#form-error").html(result);
            $("#form-error").show();
        }
     }
 });


0 commentaires

0
votes

Vous devez transmettre les données de manière différente, xxx

dans votre PHP si vous essayez le code xxx

Renvoie la valeur du paramètre1 Envoyer le formulaire de la demande AJAX


0 commentaires

1
votes

Pendant une longue discussion avec l'OP, il a été déterminé qu'ils utilisent mod-réwrite pour masquer les extensions .php sur chaque fichier.

Cela se passe en raison de l'élimination des extensions PHP de l'URL que je suppose avec la réécriture de l'URL dans le site htaccess

donné que c'est le cas, la modification de l'appel AJAX devrait être axée sur l'URL. Modifier ceci: xxx

à ceci: xxx

et votre Ajax doit fonctionner correctement.


0 commentaires