使用 AJAX 和 PHP 重新加载 TINYMCE 3.5

Reloading TINYMCE 3.5 with AJAX and PHP

本文关键字:加载 TINYMCE AJAX PHP 新加载 使用      更新时间:2023-09-26

我在使用 PHP 和 AJAX 更新 HTML Web 上的所见即所得编辑器 (TinyMCE 3.5) 的内容时遇到问题。

"新闻.php"的初始代码:

<script type="text/javascript">
tinyMCE.init({
    // General options
    mode : "textareas",
    theme : "advanced",
...
  });
</script>

...
      <select id="id_languages" name="id_languages" onchange="recibeid('loading_news_language.php', 'id_news=<?php echo $id_news;?>&id_languages='+document.getElementById('id_laguanges').value+'', '', 'load_news_language');">
        <?php
          $row_idiomas = get_languages();
          for($i = 0; $i<count($row_languages); $i++){
        ?>
        <option value="<?php echo $row_languages[$i]["id_languages"];?>"><?php echo $row_languages[$i]["name"];?>
        </option>
        <?php
          } //close bucle for
        ?>
    </select>
  </div>
 </div>
<div class="rowform"></div><!-- rowform -->
<div id="load_news_language">
      <?php include("loading_news_language.php");?>
</div>
...

首次加载"loading_news_language.php"时,Tiny 编辑器工作正常,但如果在单击不同语言时使用标签"选择器",请不要再次加载编辑器,只有 de 内容。 我需要重新加载编辑器。

loading_new_language.php代码:

...
<textarea name="text" id ="text" rows="1" style="height: 300px;">
        <?php 
        if(isset($_POST["text"]))
        {echo $_POST["text"];}
        elseif (isset($_GET["id_news"])) 
        {echo $row_news_languages["text"]; }
        ?>
</textarea>
...

提前感谢所有试图提供帮助的人。

当您动态尝试更改所见即所得编辑器时,就会发生这种情况,它只是中断。您需要做的是,每次更改内容时重新启动编辑器。

您需要删除TinyMCE编辑器,然后使用以下功能使用新内容再次"重新添加"它,其中IDofYourEditor必须替换为tinyMCE编辑器的ID。

tinyMCE.execCommand('mceRemoveControl',true,'IDofYourEditor');

将新内容加载到编辑器后,您必须再次重新启动编辑器,就像您在示例中所做的那样:

tinyMCE.init({
  // General options
  mode : "textareas",
  theme : "advanced",
  ...
});

这样,您的编辑器应该可以正常工作。