2011-04-05 139 views
1

我想将tiny_mce的image_list_url更改为php文件。包括PHP文件作为JS

我将url更改为image_list.php文件。它生成与js文件相同的确切输出文本。

但即使在给出相同的输出后,它也不会显示图像列表。

我想知道内容类型是否影响它?

我的JS文件内容:

// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. 
// There images will be displayed as a dropdown in all image dialogs if the "external_link_image_url" 
// option is defined in TinyMCE init. 

var tinyMCEImageList = new Array(
    // Name, URL 
    ["Logo 1", "media/logo.jpg"], 
    ["Logo 2 Over", "media/logo_over.jpg"] 
); 

我的PHP代码:

<?php 
    require('../../../system/config.php'); 
    $strPath = APP_ROOT.DS.'sys_uploads/images/'; 
    $objFileList = dir($strPath); 
    $arrFileList = array(); 
    while (false !== ($entry = $objFileList->read())) { 
     if(is_file($strPath.$entry)) 
      $arrFileList[] = array($entry, ABS_URL.'/sys_uploads/images/'.$entry); 
    } 
    $objFileList->close(); 

    header('Content-type: application/x-javascript'); 
    //header('Content-type: text'); 
?> 
// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. 
// There images will be displayed as a dropdown in all image dialogs if the "external_link_image_url" 
// option is defined in TinyMCE init. 

var tinyMCEImageList = new Array(
    // Name, URL 
<?php 
    if(count($arrFileList)>0) 
     foreach($arrFileList as $dataRow): 
?> 
    ["<?php echo $dataRow[0];?>", "<?php echo $dataRow[1];?>"], 
<?php endforeach; ?> 
); 

我的PHP输出:

// This list may be created by a server logic page PHP/ASP/ASPX/JSP in some backend system. 
// There images will be displayed as a dropdown in all image dialogs if the "external_link_image_url" 
// option is defined in TinyMCE init. 

alert('test working or not'); 

var tinyMCEImageList = new Array(
    // Name, URL 
    ["Logo 1", "media/logo.jpg"], 
    ["Logo 2 Over", "media/logo_over.jpg"] 
); 

编辑:

按照建议,我甚至增加这也是一个弹出消息没有出现。

解决方案:

逼债知道什么是我的代码错误,但找到很好的解决办法,从链接提示:

http://tinymce.moxiecode.com/wiki.php/Configuration%3aexternal_image_list_url

+0

你为什么要计算'$ arrFileList'的大小?只要它是一个数组,它就不是'foreach'所必需的。 – Htbaa 2011-04-05 08:10:52

+0

我想跳过,如果它的空白... thnx的建议...它可以帮助我优化我的代码 – KoolKabin 2011-04-05 08:13:32

回答

1

同时作为.js文件和你的PHP文件的输出是相同的,应该有没有区别。 text/javascript是JS最广泛支持的MIME类型,所以使用可能帮助。

它也不会伤害到你的名字动态生成JS文件使用约定,如XYZ.php.js和使用mod_rewrite来解析php.js文件作为PHP。

编辑:

而且,每官方TinyMCE docs,请确保有动态生成JS的<?php开放标记之前没有空格,还要检查其UTF8 BOM可以是无形产出的偷偷摸摸的原因。

+0

我试图添加标题('Content-type:text/javascript');但它并没有帮助...以及第二个想法,这也是伟大的...我会尝试 – KoolKabin 2011-04-05 08:15:18

+0

你如何包括js文件? – 2011-04-05 08:17:53

+0

它只是从tiny_mce脚本...即。在tiny_mce_url列表的选项中指定它... – KoolKabin 2011-04-05 08:19:18

0

无需更换任何头。只输出JavaScript。

js.php:alert("Working!")

TEST.HTM:<script type="text/javascript" src="js.php"></script>

当我装TEST.HTM,我得到了一个警告框

+0

我也试过你的建议......但它不会弹出消息... – KoolKabin 2011-04-05 08:21:29

0

这肯定是不正确头类型的问题。

请你改变线

报头( '内容类型:应用程序/ x-的javascript');

报头( '内容类型:应用/ JavaScript的');

由于application/x-javascript不是正确的JavaScript标头。告诉我这个东西是否有帮助

+0

我改变了它,但没有改变... – KoolKabin 2011-04-05 08:21:07