动态添加javascript到

时间:2013-04-28 22:49:47

标签: php javascript dom dynamic include

如果浏览器检测到它在线,我使用函数“loadScript”插入外部.js。

<script type="text/javascript">
function loadScript()
{
    if (navigator.onLine == true)
    {
        var src =  "js/getdata.js";
        var script = document.createElement("script");
        script.type = "text/javascript";
        script.src = src;
        document.getElementsByTagName("head")[0].appendChild(script);
    }
}
</script>

除了最终的脚本显示为......

之外,一切正常
<script type="text/javascript" src="js/getdata.js">
function getData() // get MySQL data from db
{
<?php
$dbopen = 0; // database flag
$con = mysql_connect("website.co.uk","guest","password");
mysql_select_db("DB", $con);
if (!$con)
{die('Could not connect: ' . mysql_error());}
else
{$dbopen = 1;}
?>  

等...

Firebug控制台告诉我函数getData未定义,内容

<?php

是语法错误...

我想让脚本进入头部并将其定义为DOM中的可用函数。

我很感激您的任何想法。

GitaarLAB要求提供整个代码,所以在这里。

<html>
<head>
<script type="text/javascript">
function loadScript()
{
if (navigator.onLine == true)
{
    var src =  "js/getdata.js";
    var script = document.createElement("script");
    script.type = "text/javascript";
    script.src = src;
    document.getElementsByTagName("head")[0].appendChild(script);
}
}
</script>
</head>
<body>
<script type="text/javascript">
loadScript();
</script>
</body>
</html>

输出是......

<script type="text/javascript" src="js/getdata.js">
function getData()
{
<?php
$hhgopen = 0;
$con = mysql_connect("website.co.uk","guest","password");
mysql_select_db("ThisDB", $con);
if (!$con)
{
die('Could not connect: ' . mysql_error());
}
else
{
$result = mysql_query("SELECT * FROM articles", $con);
$numrows = mysql_num_rows($result);
$hhgopen = 1;
}
?>
}
</script>

5 个答案:

答案 0 :(得分:2)

如果您希望PHP生成脚本,则需要将其放在PHP文件中。将文件重命名为js/getdata.js.php并相应地更新src

另一种选择是将Web服务器配置为将所有.js文件解析为PHP,但实际上您不太可能想要这样做。

答案 1 :(得分:0)

您的服务器未设置为以php身份处理.js文件。所以它只是将该文件作为纯文本发送出去(就像使用普通的javascript文件一样)。

尝试将该文件重命名为.php扩展名。

答案 2 :(得分:0)

要在外部JS文件中运行PHP,通常需要执行以下操作:

  1. 将getdata.js重命名为getdata.js.php
  2. 为getdata.js.php添加一个特殊的标题输出,将其标识为javascript

    标题(“Content-type:application / x-javascript”);

  3. 问候。

答案 3 :(得分:0)

快速注意:任何内容都可以包含在PHP文档中,无论是原始文本,HTML,JavaScript还是简单的PHP代码。您告诉浏览器链接js文档。此文件中包含的PHP代码将不会执行,因为服务器无法通过PHP引擎解析它。

尝试将文件重命名为“getdata.php”或“getdata.js.php”并更新脚本标记的source属性。你应该好好去追求它。

答案 4 :(得分:0)

问题解决了。感谢Mark Parnell和W3Geek,他们给了我script.js.php扩展线索。加载脚本的元素不应该是函数。

详细信息:它现在作为头部中的脚本运行,如果它处于联机状态则加载该函数,然后在尝试调用新函数之前等待window.onload。

现在,如果应用程序在线,它将从PHP获取数据。如果应用程序处于脱机状态,它将从缓存和localStorage获取数据。

IOS不再在getData函数中解析PHP,这会在应用程序脱机时导致错误。

希望这有一些用处。

<html>
<head>
<script type="text/javascript">
if (navigator.onLine == true)
{
var src =  "js/getdata.js.php";
var script = document.createElement("script");
script.type = "text/javascript";
script.src = src;
document.getElementsByTagName("head")[0].appendChild(script);
}
</script>
</head>
<body>
<script type="text/javascript">
window.onload=function(){getData();};
</script>
</body>
</html>
相关问题