如何将TinyMCE的textarea中的内容直接传递给PHP文件而不是通过AJAX发送?

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,其idmytextareadump.phpdump.php可以正常打印阵列.

我的问题是如何将TinyMCE中的内容textarea直接传递给PHP文件而不是通过AJAX发送?没有AJAX就能完成工作.

Bha*_*ata 3

是的,您可以在没有 AJAX 的情况下使用隐藏的属性发送它iframe,该隐藏的targetname来自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。