it_*_*ure 6 html javascript php tinymce
我用嵌入式TinyMCE构建了一个简单的网页.
HTML部分:
<form method="post" action="dump.php">
<div id="main">
<div id="container_left">
<textarea id="mytextarea"></textarea>
<input id="submit" type="submit" value="submit">
</div>
<div id="show_right"></div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
JavaScript部分.
<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>
Run Code Online (Sandbox Code Playgroud)
现在,我想在单击submit按钮后在TinyMCE的编辑器中打印内容.
dump.php
<?php
print_r($_POST);
?>
Run Code Online (Sandbox Code Playgroud)
为什么没有打印dump.php?
我可以通过AJAX方法将信息发送到dump.php.
1.删除<form method="post" action="dump.php"></form>html部分.
2.在JavaScript部分中添加以下js代码.
<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>
Run Code Online (Sandbox Code Playgroud)
我曾尝试,它可以通过我的类型的内容textarea,其id是mytextarea要dump.php和dump.php可以正常打印阵列.
我的问题是如何将TinyMCE中的内容textarea直接传递给PHP文件而不是通过AJAX发送?没有AJAX就能完成工作.
是的,您可以在没有 AJAX 的情况下使用隐藏的属性发送它iframe,该隐藏的target值name来自iframe。原始页面将不会重新加载。来自服务器的答案将被加载到隐藏中iframe。在这种情况下,您必须将iframe display设为none。
<iframe name="server_answer" style="display:none"></iframe>
<form method="post" action="dump.php" target="server_answer">
<div id="main">
<div id="container_left">
<textarea id="mytextarea" name="mytext"></textarea>
<input id="submit" type="submit" value="submit">
</div>
<div id="show_right"></div>
</div>
</form>
Run Code Online (Sandbox Code Playgroud)
对于您来说,textarea您还必须编写一些name属性,例如name="mytext"因为在服务器端您想要获取将发送的文本。因为你没有写这个,所以name你无法得到它。在您的 AJAX 解决方案中,您可以使用ajax.send('data='+data);. 在这种情况下data就像你的名字textarea。
对于您的 PHP 脚本:
print($_POST["mytext"]); //mytext is name of textarea
Run Code Online (Sandbox Code Playgroud)
替代解决方案
您还可以将提交表单显示为 iframe 内的单独页面,并且当提交表单时,外部页面将不会重新加载。该解决方案也不使用 AJAX。