关于加载js文件的问题

cuiyang000 2010-05-31 02:52:51
最近做个东西,因为涉及到多语言,所以在js文件里必须得能使用php代码,

比如

$(document).ready(function(){
var aa = '<?php echo "q"; ?>';
alert(aa);
});

这样的.

现在问题就在于,如果我直接把以上代码通过

<script>
$(document).ready(function(){
var aa = '<?php echo "q"; ?>';
alert(aa);
});
</script>

的方式写到php页面中,是可行的,但是如果我写在js文件中,再通过php加载,就无法运行了.

我加载js文件的代码是

ob_start();
echo "<script>";
readfile("xxx/yyy/file.js");
echo "</script>";
ob_flush();


不知道哪里有问题? 把readfile换成file_get_contents也不行,而如果换成include的话,因为我使用的是CI框架,我写在js文件中的代码含有 $this->lang->line("xyz"); 字样,通过firebug查看,发现报错说在非对象内容中使用$this..很是莫名...

注:加载是没有问题的,都能加载进来,通过查看源代码能看到,唯一的问题就是如果使用readfile或file_get_contents,源代码中还是

<script>
$(document).ready(function(){
var aa = '<?php echo "q"; ?>';
alert(aa);
});
</script>

而如果直接把以上内容写到我需要加载js的php页面中的话,显示的就会是

<script>
$(document).ready(function(){
var aa = 'q';
alert(aa);
});
</script>

也就是说php代码正常运行,而不是被当做字符串.

请教各位大大解决方法...
...全文
440 8 打赏 收藏 转发到动态 举报
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
cuiyang000 2010-06-02
  • 打赏
  • 举报
回复
6楼的思路很好`谢啦`大概用了和你的思路差不多的`万分感谢`
YHL27 2010-05-31
  • 打赏
  • 举报
回复
learning....
Dleno 2010-05-31
  • 打赏
  • 举报
回复
把你的语言字符,合成一个多维数组。
在PHP里josn_encode
并在页面里赋给一个JS变量。
在你的JS文件中你就只需要按照操作JOSN的方式去操作那个JS变量了。
不建议在JS文件里大量的这样写:
var aa = '<?php echo "q"; ?>';
建议按照以上的方式。你只需要输出一次JOSN格式的PHP变量就行了。
cuiyang000 2010-05-31
  • 打赏
  • 举报
回复
谢啦`楼上的`不过那样也不行`关键问题在于我内含有$this->lang->line("xxx")这样的PHP代码

发现除非 直接把js代码echo出来以外,基本没别的办法了

不然都会报错说什么在 non-object context 使用$this
xuzuning 2010-05-31
  • 打赏
  • 举报
回复
echo "<script>";
include("xxx/yyy/file.js");
echo "</script>";
amani11 2010-05-31
  • 打赏
  • 举报
回复
这个效率就不需要考虑了吧?,,再说,这样子你还可以通过gzip压缩了传输,效率更好
cuiyang000 2010-05-31
  • 打赏
  • 举报
回复
谢了,我是用的CI的language class做的,因为js需要多语言的地方只有很小一部分(几个弹出框而已),所以不太可能为了js单独设计多语言方案,哎..看来只能把js文件写成php文件了


<?php
header("Content-type: text/javascript");
?>
$(document).ready(function(){
var aa = '<?php echo "q"; ?>';
alert(aa);
});


然后通过
<script src="xyz.php" type="text/javascript"></script>的方式加载,不知道这样做的话效率如何呢?会不会大大减慢加载速度?因为js文件海量茫茫多....
amani11 2010-05-31
  • 打赏
  • 举报
回复
你直接读取文件,当然就显示源代码,一点问题都没,出现错误很正常
参考方案


<script type="text/javascript" src="script.php?language=zh_cn"></script>
//script.php区分语言



多语言不知你怎么设计架构的,我是这样的

公共文件中对语言进行判断,然后包含进来

比如language/english.php文件,以数组形式保存语言

js或者前台显示语言的时候,打印相应的数组[id],需要改动就改动语言文件

4,250

社区成员

发帖
与我相关
我的任务
社区描述
国内外优秀PHP框架讨论学习
社区管理员
  • Framework
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧