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: Toute suggestion? P> $ google_recaptcha = $ _Post ['recaptcha'] ?? ''; code> <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>
4 Réponses :
Vous devez utiliser Vous allez: P> Data: {reCAPTCHA: grecaptcha.getresponse ()} code> pour la publier correctement. $(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();
}
}
});
});
});
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();
}
}
});
Vous devez transmettre les données de manière différente, dans votre PHP si vous essayez le code p> Renvoie la valeur du paramètre1 Envoyer le formulaire de la demande AJAX P> P>
Pendant une longue discussion avec l'OP, il a été déterminé qu'ils utilisent mod-réwrite pour masquer les extensions 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 p>
BlockQuote> donné que c'est le cas, la modification de l'appel AJAX devrait être axée sur l'URL. Modifier ceci: p> à ceci: p> et votre Ajax doit fonctionner correctement. P> p > .php code> sur chaque fichier.
Les commentaires ne sont pas pour une discussion prolongée; Cette conversation a été Déplacé pour discuter .