je me permet de poster car j'avais deux requete ajax qui fonctionnais la premiere validait recapchat et le deuxieme dans le done de la premiere requete envoyait le formulaire.
Aujourd'hui pour la seconde reruete j'obtien une erreur 500.
Bonjour, une erreur 500 c'est une erreur côté serveur.
C'est le fichier envoi-mail.php qui a générer l'erreur, poster le contenu de ce fichier pourrait nous aider.
Aussi tu peux ouvrir la console de développement -> onglet XHR , pour observer la requête réseaux qui par vers la cible et cliquer dessus -> onglet preview , pour voir le message d'erreur complet du serveur, parce que "Erreur 500" c'est très générique comme message, ce ne donne pas asser d'informations sur l'origine de l'erreur.
Tu dois pouvoir avoir le message d'erreur complet dans le terminal qui fait tourner le serveur PHP aussi.
Voici un code qui ne résoud pas ton soucis d'erreur 500 mais qui est plus "actuel" que ce qui est proposé :
$('#validate').click(async function (e) {
e.preventDefault()
grecaptcha.ready(async function () {
const token = await grecaptcha.execute('token', {action: 'validate'})
// Tu pourrais faire les getElementById en dehors de la fonction
// pour ne pas les refaire à chaque fois
document.getElementById('recaptchaResponse').value = token
const name = document.getElementById('name').value
const email = document.getElementById('email').value
const subject = document.getElementById('subject').value
const message = document.getElementById('message').value
try {
const responseToken = await $.ajax({
type: 'POST',
url: 'mail/mail.php', // Il est préférable de mettre l'URL absolue "/mail/mail.php"
dataType: 'json',
data: { // Tu peux utiliser la version "courte" si le nom de la propriété est le même que la variable
token,
name,
email,
subject,
message,
}
})
const resultToken = JSON.parse(responseToken)
if (!resultToken.success) {
$('#nok').show(1000)
return undefined
}
const responseSendMail = await $.ajax({
type: 'POST',
url: 'mail/envoi-mail.php',
dataType: 'json',
data: {
name,
email,
subject,
message,
}
})
if (responseSendMail === 'true') { // évite les '==' et '!=' et préfère les '===' et '!==' pour éviter les bugs
$('#ok').show(1000)
$('#nok').hide(1000)
console.log('ok')
return undefined
}
$('#nok').show(1000)
$('#ok').hide(1000)
} catch (error) {
console.warn(error)
} finally {
console.log('finally')
}
})
})
Sachant que le mieux serait si tu peux de ne pas utiliser jQuery et tu pourrai aussi créer des fonctions "async" pour chaque fetch ajax. Donc pour ton cas 2 fonctions : "verifyMail", "sendMail" par exemple.
suggestion de présentation.
Récupère sinon ce que tu dois envoyer à ton fichier PHP et ouvre sur ton navigateur, tu verras peut être en clair cette erreur.
la connaissance s'acquiert par l'expérience, le reste n'est qu'information.
My website : Mon serveur discord, Se demerder tout seul, Faille XSS et SQL