Récupérer un Dom dans Php pour envoyer un mail

Fermé
robunccm Messages postés 52 Date d'inscription jeudi 7 février 2019 Statut Membre Dernière intervention 9 mars 2024 - 26 juin 2022 à 14:57
 DoctorHow - 1 juil. 2022 à 07:02
Bonjour à tous
Sur un site j'ai intégré un éditeur WysiWyg pour créer des Mails et par ailleurs pour saisir des messages dans un Forum.
Pour cette première étape pas de soucis

Où je peine c'est dans la phase de transfert vers le Php en Ajax.
Le code ci-dessous semble fonctionné, j'ai une réponse Ok en retour de la requête, mais je ne sait pas comment récupérer mes data dans le Php. Habituellement j'utilise $_POST ou $_REQUEST pour les variables connues dans les Form.
J'ai cru comprendre que c'était similaire à un transfert de fichier mais je n'arrive pas transposer.

Merci de votre aide

function f802j_MailsEnvoiMail(){
const parser = new DOMParser();
const xmlString = document.getElementById("idSaisieEditeur").innerHTML;
const doc1 = parser.parseFromString(xmlString, "application/xml");

var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function(){
if (this.readyState == 4 && this.status == 200) {
console.log("802 2522 = retour xmlhttp Ok" );
//console.log("002 1013 = " + this.responseText);
document.getElementById("idCorpsMailsListe").innerHTML = this.responseText;
}
};
xmlhttp.open("POST", "https://www.rob-train.fr/800-MembresMails/850-Mails/853-FuPMails.php?fu=f853p_MailsEnvoiMail" , true);
//xmlhttp.setRequestHeader("Content-Type", "multipart/form-data");
xmlhttp.send(doc1);
A voir également:

1 réponse

Salut,
rien ne vous empêche de récupérer le contenu de votre DOM en texte et de l'envoyer par formulaire en POST.
Ce que vous montrez c'est un code AJAX(mieux de passer par JSON que par XMLsauf si vous voulez du XML au final, le JSON est natif de JavaScript et utilisable en objet directement) mais vous devriez faire en premier lieu la partie envoi par formulaire puis rajouter AJAX.

Si les données viennent du client je ne vois pas trop l'intérêt de la méthodologie AJAX puisque avant qu'elle soient crées les données n'existent pas, AJAX sert surtout à éviter de faire des requêtes serveurs en les faisant de manière asynchrone(avant qu'on ait besoin des données celles ci sont préparées et disponible sans avoir à faire une requête serveur).

"J'ai cru comprendre que c'était similaire à un transfert de fichier mais je n'arrive pas transposer. "
C'est un formulaire tout court et identique à n'importe quel transfert de données.
Il n'y a que l'apparence qui change et vous pouvez utiliser des champs cachés pour cela.
Donc une question de HTML et éventuellement JavaScript pour remplir les champs, le DOM c'est ce qui permet de relier l'un à l'autre(Document Object Model qui est une représentation virtuelle du contenu de la page en modèle objet du document).

<form action="traitement.php" method="post">
<input id="valeur" type="hidden">
<input type="submit" value="valider">
</form>
<script>
document.getElementById('valeur').innerHTML="ma valeur"
/** bien sûr il faut relier le 'remplissage' de l'input à un élément de votre interface WYSIWYG
* voir pour ça la programmation événementielle et:  addEventListener en JS
*/
</script>


ps: ce n'est pas le dom que vous envoyez mais du texte contenu dans la page et/ou représentant du HTML, des valeurs ou autre chose exprimé en texte.
Je n'aborde que le début de votre question et pas le traitement en PHP pour l'envoi de mail ni la création de HTML dans un mail qui est problématique et ne sera pas acceptée par toutes les messageries pour des raisons de sécurité. Une boîte mail ne servant pas à cela (afficher du HTML) il serait plus intéressant de mettre u lien vers une page dynamique d'un site web éventuellement.
0