2

我需要在 tinyMCE 弹出窗口中有表(有数千行),以便用户可以过滤/选择一行并将其插入编辑器窗口。所以我有数据表,具有服务器端处理和过滤功能。相关代码是

<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script type="text/javascript" src="js/dialog.js"></script>
<script type="text/javascript" charset="utf-8">
    $(document).ready( function() {
    var respTable = $('#resp_table').dataTable({
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": 'insert_resp.php',
        ...

..ETC。

JSON响应很好,

"sEcho":"1","iTotalRecords":"18783","iTotalDisplayRecords":"18783","aaData":[["0","1","2","3","4","5"],["0","1","2","3","4","5"]]

它工作得很好,但前提是我排除了允许将结果返回到编辑器窗口的 tinymce 弹出脚本:

<!--<script type="text/javascript" src="../../tiny_mce_popup.js"></script>-->
<script type="text/javascript" src="js/dialog.js"></script>
<script type="text/javascript" charset="utf-8">
    $(document).ready( function() {
    var respTable = $('#resp_table').dataTable({
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": 'insert_resp.php',
        ...

这种方式当然会弹出“tinyMCEPopup 未定义”错误,但表格有效。

如果不注释掉,控制台中没有错误,没有警告,XHR 请求和响应是相同的,但是 Datatables 显示“处理”并且表中没有填充数据。

如果我将响应直接包含在表 init 中,它也可以:

<script type="text/javascript" src="../../tiny_mce_popup.js"></script>
<script type="text/javascript" src="js/dialog.js"></script>
<script type="text/javascript" charset="utf-8">
    $(document).ready( function() {
    var respTable = $('#resp_table').dataTable({
        "bProcessing": true,
        "bServerSide": true,
        "sAjaxSource": 'insert_resp.php',
        "sEcho":"1","iTotalRecords":"18783","iTotalDisplayRecords":"18783","aaData":[["0","1","2","3","4","5"],["0","1","2","3","4","5"]],
        ...

使用这最后一点脚本,可能会认为我的 JSON 响应有问题,但是当我注释掉第一行(tinymce 弹出窗口)时它工作正常..

此外,在 tinyMCE 插件文件夹中,在 /js/dialog.js 中,第一行是

tinyMCEPopup.requireLangPack();

如果我将其注释掉,则 DataTables 可以工作。它所指的 en_dlg.js 内部是

tinyMCE.addI18n('en.linktest_dlg',{
  //title : 'Title',
  //insert : 'Insert it',
  //cancel : 'Back'
});

注释掉与否,这似乎是罪魁祸首。是不是很奇怪。。

谁能教我这里发生了什么?挠了三天头,好痛。。

4

0 回答 0