-1

如果浏览器检测到它在线,我正在使用函数“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;}
?>  

ETC...

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>
4

5 回答 5

2

如果你想让脚本由 PHP 生成,你需要把它放在一个 PHP 文件中。将文件重命名为js/getdata.js.php并相应地更新src

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

于 2013-04-28T22:53:14.803 回答
0

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

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

所以现在,如果应用程序在线,它会从 PHP 获取数据。如果应用离线,它会从缓存和本地存储中获取数据。

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>
于 2013-04-29T09:44:52.650 回答
0

快速说明:任何内容都可以包含在 PHP 文档中,无论是原始文本、HTML、JavaScript 还是简单的 PHP 代码。您告诉浏览器链接 js 文档。此文件中包含的 PHP 代码将不会执行,因为没有告诉服务器使用 PHP 引擎对其进行解析。

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

于 2013-04-28T23:45:28.097 回答
0

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

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

    header("内容类型:应用程序/x-javascript");

问候。

于 2013-04-28T22:57:22.823 回答
0

您的服务器未设置为将 .js 文件作为 php 处理。所以它只是将该文件作为纯文本发送(就像它对常规 javascript 文件所做的那样)。

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

于 2013-04-28T22:54:24.073 回答