Javascript 从PHP执行html代码

Javascript 从PHP执行html代码,javascript,php,html,Javascript,Php,Html,更新:找到了解决方案!使用chrome开发工具,我发现问题在于在/Applications/blahblah中硬编码src文件。它正在localhost/Applications/blahblah中查找文件。现在,我已经将子目录中所需的.js文件复制到了/Library/WebServer/Documents/(localhost似乎是从我的机器上开始的),并编写了一条路径。谢谢你的帮助 这里是PHP新手。通过一些彻底的谷歌搜索和大量的自我调试,找不到我的答案 我在自己的机器上本地做所有事情

更新:找到了解决方案!使用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();

?>

之所以出现这种情况,是因为PHP是一种服务器端脚本语言,而不是像HTML那样的客户端脚本语言。它需要一台服务器来运行。要在计算机上安装web服务器,您需要像或这样的软件。一旦安装了这些,就可以使用PHP

更新:您的代码没有输出任何内容,因为
GenHCSplineIrregTime
类没有正确导入。您需要使用or(或
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();
?>

更新2:我很高兴您的问题得到了解决,但下一次,请特别注意页面的标题,该标题已更改(因为除了HTML中的Javascript部分外,其他内容都正常工作)。因此,它并不像您暗示的那样是一个完全空白的页面(即没有编译HTML)。

如果您的HTML代码是一个字符串,比如$str,那么您只需要像下面这样打印字符串的内容:

$str "<h1> Hello world ! </h1>";
echo $str;

PHP只在服务器上运行

下载并运行apache服务器

下载并安装之后,转到xampp文件夹和htdocs文件夹,并将php文件放在其中

然后导航到php文件所在的位置,例如:
localhost:/index.php


那么您的php代码应该可以正常运行

如果您在源代码中查看HTML,那么您知道HTML字符串正在打印。那么也许你在用标题做些什么?当您从PHP打印HTML内容时,Chrome可能不希望收到HTML内容,但是当您将相同的内容放入扩展名为.HTML的文件时,这是一个简单的过程,因此它会自动呈现。尝试打开Chrome的开发工具,重新加载页面,然后在“网络”下查看您收到的标题


如果您实际上正在打印html字符串,正如您在客户端(chrome)收到的“源代码”中所验证的那样,那么您知道您的php代码已经过评估。如果这是真的,并且不去猜测js脚本到底发生了什么,那是我唯一能想到的事情

这可能是因为PHP文件没有托管。你有回音吗?可能是无穷无尽的原因之一。“让我知道我可能提供的更多信息可能会有所帮助。”-代码。你能发布任何代码吗@Shahar如果
HTML
代码被输出到页面,任何web浏览器都会对其进行处理。编辑:除非服务器出现mime类型问题或缺少服务器…@Fred ii-我猜他没有Wampserver/xampp。当我开始使用PHP时,我也遇到了同样的问题。或者可能是因为我没有安装PHP(Mac电脑有PHP吗?)@Shahar你说得对。或者PHP没有正确配置。可能是任何东西。OP需要显示一些服务器信息。Hrmm。。我想我有一台服务器在运行?我用的是mac电脑,我的apache正在运行。例如,如果我尝试打开包含简单“”的localhost index.php,则效果很好。这是否意味着我有一台正在运行的服务器?@n3utrino是的。给我一点时间看看代码。我在mac上运行,apache服务器正在运行。如果我有一个简单的index.php脚本,那么localhost:/index.php会很好地打开。。。我还有别的事要做吗?嗯,你确定最后把你的文件命名为.php了吗?请确保,如果文件的扩展名是.html,它只运行html、javascript和css代码,而不运行php代码。是的,文件是php。归根结底,它是一个.php文件,里面有一个长长的html字符串的回声(里面有一个javascript函数)。如果我将该echo单独保存为.html文件,浏览器将很好地加载该文件。呸!Kk我编辑了原始帖子以显示代码。html的生成有点混乱。。。如果有帮助,我可以运行脚本,查看源代码以获得外观更好的html,然后发布它。
//index.php
<?php
require 'foo.php';
$obj = new foo();
?>
$str "<h1> Hello world ! </h1>";
echo $str;
   $str = file_get_contents("path_to/blahblah.html");
   echo $str;