我需要在tinyMCE弹出窗口中有表(有数千行),以便用户可以过滤/选择一行并将其插入编辑器窗口。所以我有DataTables,服务器端处理和过滤。相关代码是
<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',
...
...等。
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请求和响应是相同的,但是数据表显示'处理'而且表没有填充数据。
如果我将响应直接包含在表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 popup)行时,它工作正常。
另外,在tinyMCE插件文件夹的/js/dialog.js中,第1行是
tinyMCEPopup.requireLangPack();
如果我对此进行评论,那么DataTables就可以了。它所引用的en_dlg.js内部是
tinyMCE.addI18n('en.linktest_dlg',{
//title : 'Title',
//insert : 'Insert it',
//cancel : 'Back'
});
注释与否,这似乎是罪魁祸首。这不奇怪..
有人能教我这里发生了什么吗?我花了三天时间挠挠头,疼得厉害。