Je crée une page Web simple avec TinyMCE intégré.
La partie HTML:
<script>
function send(){
var data = tinyMCE.get('mytextarea').getContent();
var ajax = new XMLHttpRequest();
ajax.open('POST','dump.php',false);
ajax.setRequestHeader('Content-type','application/x-www-form-urlencoded');
ajax.send('data='+data);
}
ob = document.getElementById("submit");
ob.addEventListener("click",send);
</script>
La partie JavaScript.
<?php
print_r($_POST);
?>
Maintenant, je veux imprimer du contenu dans l'éditeur de TinyMCE, après avoir cliqué sur le bouton soumettre .
Le fichier dump.php
<script src="tinymce/tinymce.min.js"></script>
<script type="text/javascript">
tinymce.init({
selector: "textarea",
height: 250,
plugins: [
"code advlist autolink lists link image charmap print preview anchor",
"searchreplace visualblocks code fullscreen",
"insertdatetime media table contextmenu paste"
],
toolbar: "code insertfile undo redo | styleselect | bold italic | alignleft aligncenter alignright alignjustify | bullist numlist outdent indent | link image",
setup: function (editor) {
editor.on('init keydown change', function (e) {
document.getElementById('show_right').innerText = editor.getContent();
});
}
});
</script>
3 Réponses :
Tout d'abord, vous devez nommer pour textarea. Et "dump.php":
php
print_r ($ _POST [" name_of_textarea "]);
?>
print_r ($ _ POST) peut imprimer le tableau entier.
Oui, vous pouvez l'envoyer sans AJAX avec un Pour votre Pour votre script PHP: Solution alternative Vous pouvez également afficher le formulaire de soumission comme une page distincte à l'intérieur de l'iframe, et lorsqu'il est soumis, la page externe ne rechargera pas. Cette solution n'utilise pas non plus AJAX. iframe caché qui a comme target attribuer la valeur name de iframe . La page d'origine ne se rechargera pas. La réponse de votre serveur sera chargée dans iframe caché. Dans ce cas, vous devez définir l'affichage iframe sur aucun.print($_POST["mytext"]); //mytext is name of textarea
textarea vous devez également écrire un nom comme attribut, par exemple comme name = "mytext" parce que du côté serveur vous voulez obtenir le texte, qui sera envoyé. Et parce que vous n'avez pas écrit ce nom , vous ne pouvez pas l'obtenir. Dans votre solution AJAX, vous le faites avec ajax.send ('data =' + data); . Dans ce cas, data est comme le nom de votre textarea.
Vous n'avez pas besoin d'iframe, ajoutez simplement ceci à votre configuration tinymce pour garder la zone de texte originale synchronisée avec l'éditeur
<!DOCTYPE html>
<html>
<head>
<script src='https://cloud.tinymce.com/stable/tinymce.min.js'></script>
<script>
tinymce.init({
selector: '#mytextarea',
setup: function (editor) {
editor.on('change', function () {
editor.save();
});
}
});
</script>
</head>
<body>
<?php if ('POST' === $_SERVER['REQUEST_METHOD']): ?>
<pre><?php print_r($_POST) ?></pre>
<?php else: ?>
<form method="post">
<label for="mytitle">Title</label>
<input type="text" id="mytitle" name="title" value="">
<textarea id="mytextarea" name="content"></textarea>
<button type="submit" name="submit">Submit</button>
</form>
<?php endif; ?>
</body>
</html>
Poc rapide et sale
tinymce.init({
selector: '#mytextarea',
setup: function (editor) {
editor.on('change', function () {
editor.save();
});
}
});
Utilisez la propriété de configuration
setup. Jetez un œil à mon message ci-dessous.