PHP var->Javascript->PHP
PHP var->Javascript->PHP
我正在处理一个存在以下问题的项目:
数据库(通过php)提供了一个数组,其中包含需要加载的JavaScript文件列表。它被存储在变量CCD_ 1中。我需要用php(foreach loop)
提取这些源文件,并通过JavaScript加载它们。它是这样的:
document.write("<?php foreach($js_files as $filename) {if( trim($filename) <> "" ){echo '<script type=''text/javascript'' src=$filename></script> 'n';}} ?> ");
问题是它加载了几个文件,但第一个文件(一个googleapi文件)出错了。有人能解决这个问题吗?或者我必须朝哪个方向看的任何想法。
这在多个级别上都是个坏主意,但可以很容易地解决。但首先:1) 切勿使用document.write()
。要动态加载脚本,最好使用:
var script = document.createElement('script'); //create a script element
script.src = 'javascript.js'; //path to src file
//now get the body element and append the new script element
document.getElementsByTagName('body')[0].appendChild(script);
2) 如果需要按特定顺序加载这样的脚本,则加载脚本可能不起作用,因为动态脚本的下载是异步(非确定性)发生的
3) 一般来说,您应该将js
文件连接起来以减少http
请求,您可以使用grunt之类的工具来进行自动构建过程。
4) 如果你真的,真的想动态加载这些脚本,你可以使用我在(1)中概述的过程来获得文件名,使用ajax
:
//depends on jQuery, but could be written vanilla if needed
$.get('myPhp.php', function(resp){
var arr = resp.split(','); //splits returned string on the comma
var i = arr.length;
//iterate through the results set
while (i--) {
//do process from (1) above
}
});
请注意,这仍然存在无序问题。如果您需要顺序动态加载,请查看require.js
如果代码需要从JavaScript函数中激发,那么您可以去掉document.write,转而创建新的脚本对象并附加到head标记。
<?php
foreach($js_files as $filename){
if(trim($filename) != ''){
echo 'var s = document.createElement("script");';
echo 's.type = "text/javascript";';
echo 's.src = "' . $filename . '";';
echo 'document.getElementsByTagName("head")[0].appendChild(s);'
}
}
?>
您必须转义if( trim($filename) <> "" )
中的代码",因为"
破坏了javascript字符串。
相关文章:
- 为什么当CRLF被分配到<输入>使用php
- JS对象->来自jquery ajax的JSON提交->php迭代
- PHP网站:导出<表>到Excel-并剥离<img>并且<a>标签
- 有什么方法可以使用类似<的函数吗;?php包含>在phonegap中
- JS坐标->PHP脚本-如何在PHP中保留变量
- 在php中,内联<脚本>解决
- php/mysql搜索结果-当类型>1,同时保持其他类型不>1-代码点火器
- 如何将jQueryAJAX与PHP结合使用,使用<a>标签
- 如何更改<a>使用php file_get_contents()标记href
- 添加<tr>元素到动态表,动态不刷新页面,php-jquery
- javascript->php加密解密-需要澄清和方法请
- 我如何使用下划线模板(<%%>),就像我在PHP中使用它一样(lt;?PHP?>
- 插入键=>来自提交的Javascript对象的PHP中的值对
- 有没有其他方法可以在远程服务器上包含php文件?除了<?php include()>
- Facebook PHP SDK:$Facebook->getUser()有时返回0
- 如何使用Joomlas<?php echo$this->模板>在Javascript中
- 得到<选择>而无需使用php在同一页面上提交
- JS函数与PHP vars onclick在<a>标记不起作用
- 为什么PHP对AJAX的响应包含<脚本>aBunchOfJavascript此处</脚本>
- PHP:两个<选择>,第一个allready填充,第二个我想用值填充