更新:找到解决方案!使用chrome开发人员工具,我发现问题是在/ Applications / blahblah中硬编码src文件。它在localhost / Applications / blahblah中寻找文件。现在,我已经将子目录中所需的.js文件复制到/ Library / WebServer / Documents /(其中localhost似乎从我的机器上开始)并编写了一条到那里的路径。谢谢你的帮助!
这里有PHP的新手。无法通过一些彻底的谷歌搜索找到我的答案,而且还有很多尝试自我调试。
我在自己的机器上做所有事情。
我有一个PHP类,它构建一个完整构成html页面的字符串,然后返回它。我的index.php脚本创建了这个类的一个实例,并调用了返回html的函数,并回显了它。当我执行这个类时,页面出现空白(使用chrome作为浏览器)。当我"查看来源"在空白页面上,我看到了我打算查看的html脚本。
如果我将该html脚本复制并粘贴到一个新文件中,blahblah.html并直接使用chrome加载blahblah.html,它就可以了。
可能的细微之处:html字符串包含一个javascript函数,该函数从我机器上的硬编码src目录中提取。
感谢您的帮助!让我知道我可能提供哪些更有用的信息。
编辑:这是代码:
的index.php:
<?php
function __autoload($class_name)
{
$source = '/Path/To/src/' . $class_name . '.php';
if (file_exists($source)) require $source;
else throw new Exception('class "' . $class_name . '" source file not found. Failed to autoload...');
}
$myweb=new GenHCSplineIrregTime();
echo $myweb->genWeb();
?>
GenHCSplineIrregTime.php:
<?php
class GenHCSplineIrregTime
{
public function __construct()
{
;
}
public function __destruct()
{
;
}
public function genWeb()
{
return $this->genEntireHTMLFile();
}
private function genEntireHTMLFile()
{
$cont="";
// $cont = $cont . "<!DOCTYPE HTML>\n";
$cont = $cont . "<HTML>\n<head>\n";
$cont = $cont . "<meta http-equiv=\"Content-Type\" content=\"text/html; charset=utf-8\">\n";
$cont = $cont . "<title>This is my title</title>\n";
$cont = $cont . "<script type=\"text/javascript\" src=\"http://ajax.googleapis.com/ajax/libs/jquery/1.8.2/jquery.min.js\"></script>\n";
$cont = $cont . "<style type=\"text/css\">\n\${demo.css}\n</style>\n";
$cont = $cont . "<script type=\"text/javascript\">\n";
$cont = $cont . "\$(function () {\n\n$('#container').highcharts({\nchart: {\ntype: 'spline'\n},\n title: {\ntext: 'BATTERY SHIT'\n},\nsubtitle: {\ntext: 'Irregular time data in Highcharts JS'\n},\n";
$cont= $cont . "xAxis: {\ntype: 'datetime',\ndateTimeLabelFormats: {\nmonth: '%e. %b',\nyear: '%b'\n},\ntitle: {\ntext: 'Date'\n}\n},\n";
$cont= $cont . "yAxis: {\ntitle: {\ntext: 'Snow depth (m)'\n},\nmin: 0\n},\ntooltip: {\nheaderFormat: '<b>{series.name}</b><br>',\npointFormat: '{point.x:%e. %b}: {point.y:.2f} m'\n},\n";
//data starts here
$cont= $cont . "series: [{\nname: 'Winter 2007-2008',\ndata: [\n";
$cont= $cont . "[Date.UTC(1970, 9, 27), 0 ],\n";
$cont= $cont . "[Date.UTC(1970, 10, 10), 0.6 ],\n";
$cont= $cont . "[Date.UTC(1970, 10, 18), 0.7 ]\n]\n}]\n";
$cont= $cont . "});\n});\n";
$cont= $cont . "</script>\n</head>\n<body>\n";
$cont= $cont . "<script src=\"/Applications/BasicSoftware/Highcharts-4.0.3/js/highcharts.js\"></script>\n";
$cont= $cont . "<script src=\"/Applications/BasicSoftware/Highcharts-4.0.3/js/modules/exporting.js\"></script>\n";
$cont= $cont . "<div id=\"container\" style=\"min-width: 310px; height: 400px; margin: 0 auto\"></div>\n";
$cont= $cont . "</body>\n</html>\n";
return $cont;
}
private function fetchData()
{
$data="";
return $data;
}
}
?>
答案 0 :(得分:2)
这是因为PHP是一种服务器端脚本语言,而不是像HTML那样的客户端脚本语言。它需要服务器才能运行。要在您的计算机上安装网络服务器,您需要使用WampServer或XAMPP等软件。安装完成后,可以使用PHP。
更新:您的代码没有输出任何内容,因为GenHCSplineIrregTime
类未正确导入 。您需要使用require
或include
(或require_once
,include_once
,取决于您需要的)语句来添加GenHCSplineIrregTime.php
,但不能使用你做到了。你做了一些旧手册显示的内容:
//foo.php
<?php
class foo {
public function __construct() {
echo "hi";
}
}
?>
//index.php
<?php
function __autoload($classname) {
$filename = "./". $classname .".php";
include_once($filename);
}
$obj = new foo();
?>
问题是,$classname
是什么?代码不完整;它只会加载任何东西,真的,或一些不相关的文件。这就是为什么相反,你几乎总能看到:
//index.php
<?php
require 'foo.php';
$obj = new foo();
?>
更新2 :我很高兴您的问题已得到解决,但下次请特别注意页面的标题,这已被更改(因为除了HTML的Javascript部分工作)。因此,它不是一个完全空白的页面,因为你暗示(即没有HTML编译)。
答案 1 :(得分:0)
如果你的html代码在一个字符串中,比如说$ str,你只需要打印字符串的内容就像这样:
$str "<h1> Hello world ! </h1>";
echo $str;
如果你的html代码在另一个页面内,你需要做的就是在一个字符串中加载你的页面内容并打印出来:
$str = file_get_contents("path_to/blahblah.html");
echo $str;
答案 2 :(得分:0)
PHP仅在服务器上运行。
下载XAMPP并运行apache服务器。
下载并安装后,转到xampp文件夹,然后转到htdocs文件夹并将php文件放在那里。
然后导航到您的php文件所在的位置,例如:localhost:/index.php
。
然后你的PHP代码应该正常运行。
答案 3 :(得分:0)
如果您正在查看源代码中的HTML,那么您就知道正在打印HTML字符串。那么也许你正在用标题做点什么?当您从PHP打印时,Chrome可能不会期望接收HTML内容,但是当您使用相同的内容并将其放入带有.html扩展名的文件时,它是不容易的,因此它会自动呈现。尝试打开Chrome浏览器的开发工具,重新加载页面,然后查看网络&#39;查看您正在接收的标题。
如果您实际上正在打印html字符串,那么您已经在“来源”中验证了该字符串&#39;客户端(chrome)收到你知道你的PHP代码被评估。鉴于这是真的,并且没有试图猜测js脚本发生了什么,这是我唯一能想到的。