如果浏览器检测到它在线,我使用函数“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>
答案 0 :(得分:2)
如果您希望PHP生成脚本,则需要将其放在PHP文件中。将文件重命名为js/getdata.js.php
并相应地更新src
。
另一种选择是将Web服务器配置为将所有.js
文件解析为PHP,但实际上您不太可能想要这样做。
答案 1 :(得分:0)
您的服务器未设置为以php身份处理.js文件。所以它只是将该文件作为纯文本发送出去(就像使用普通的javascript文件一样)。
尝试将该文件重命名为.php扩展名。
答案 2 :(得分:0)
要在外部JS文件中运行PHP,通常需要执行以下操作:
为getdata.js.php添加一个特殊的标题输出,将其标识为javascript
标题(“Content-type:application / x-javascript”);
问候。
答案 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>