从PHP创建HTML调用时,外部JS无法正常工作

时间:2011-05-19 18:47:58

标签: php javascript

我有一个PHP脚本,它通过调用我创建的PHP类来创建HTML。该类创建所有HTML标记,其中一个是加载外部JS文件的标记。当我尝试从所述文件访问函数时没有任何反应。任何想法?

索引页面:     

function main(){
    $content = "Heres some text for you";

    $page = new Page($title="MyTitle", $script="external.js", $content=$content)
    echo $page->toString();
}

function __autoload($className){
    require_once $className . '.class.php';
}

课程页面:     

    //class constructor
    function __construct($title='untitled', $script='', $content='Default Page class page'){
    $this->title = $title;
    $this->script = $script;
    $this->stylesheet = $stylesheet;
    $this->content = $content;
    // $this->currentUser = $currentUser;
    }

    // creates tag structure for HTML pages
    function toString(){
    return <<<END
            <!DOCTYPE html>
            <html xmlns="http://www.w3.org/1999/xhtml">
            <head>
            <meta http-equiv="content-type" content="text/html; charset=utf-8" />
            <script type="text/javascript" src="jquery.js"></script>
            // Heres the link to the external JS file
            <script type="text/javascript" src="$this->script"></script>

            <script type="text/javascript">
                 test();
            </script>
            <title>$this->title</title>
            <link type="text/css" rel="stylesheet" href="$this->stylesheet" />
            </head>
            <body>
        $this->content
        <p id='content'>page content</p>
            </body>
            </html>
END;
    }// end toString function

} // end class Page
?>

外部JS:

function test(){
    alert("ext. JS test works");
}

3 个答案:

答案 0 :(得分:2)

你的heredoc的结束标识符之前不能有任何空格:

        END;

应该是:

END;

答案 1 :(得分:0)

我还会检查以确保external.js文件的路径是正确的。其他任何事情都有效吗?喜欢标题还是CSS?您也没有将$ stylesheet传递到__construct中的任何地方,这会产生错误,试图设置$ this-&gt; stylesheet,也许整个脚本因此而无法加载?

答案 2 :(得分:0)

看不到任何突出的东西......

您确定JS文件可以在与脚本相同的目录中访问(如果需要,可能想要应用绝对或相对路径)吗?

你也可以,因为你有jquery(假设已加载),试着将test();的调用放在“就绪”块中,如下所示:

$(document).ready(function () {
    test();
});

除此之外,我会使用您给定的浏览器调试工具来查看是否可以收集任何有用的内容(例如脚本甚至不作为资源加载)。

祝你好运!