我需要在 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'
});
注释掉与否,这似乎是罪魁祸首。是不是很奇怪。。
谁能教我这里发生了什么?挠了三天头,好痛。。