如何将javascript放入php函数

时间:2013-11-18 06:27:39

标签: javascript php

是否可以将javascript放入php函数?如果是这样,有人可以告诉我我的代码有什么问题吗?因为每当我将多个javascript放入php函数时,我的整个功能都将丢失。

 <?php

    function headerA($title,$css) {
    $headContent = <<<HEAD
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
            <head>
                <title>$title</title>
                <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
                <link rel="stylesheet" type="text/css" href="$css" />   

                <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
                <script type="text/javascript">
                    $(function() {
                        $("li").click(function(e) {
                          e.preventDefault();
                          $("li").removeClass("selected");
                          $(this).addClass("selected");
                        });
                    });
                </script> 


            </head>
            <body>
            <div id = "header">

            </div>
    HEAD;
    $headContent .="\n";
    return $headContent;
    }

    ?>

3 个答案:

答案 0 :(得分:1)

你的代码很好。请确保你:

  • HEAD;放在行的最开头(没有前置空格)
  • 转义Javascript中的$符号。

JavaScript(jQuery)中的$符号与PHP的字符串$变量标记冲突。前置$将反斜杠如下:\$

答案 1 :(得分:1)

你应该逃避$

<<<HEAD
  $php_variable
  \$('jQuery');
HEAD;

或使用输出缓冲区

<?php ob_start(); ?>
  <?= $php_variable ?>
  $('jQuery');
<?php $head = ob_get_clean(); ?>

答案 2 :(得分:1)

不要使用header作为函数名,因为它是php的预定义函数。

Heredoc文本的行为就像双引号字符串,没有双引号。在结束HEAD行之前应该没有空格,如下所示。

check manual

<?php 
function header1($title,$css) {
    $headContent = <<<HEAD
            <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
            <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en-US" lang="en-US">
            <head>
                <title>$title</title>
                <meta http-equiv="content-type" content="text/html; charset=iso-8859-1" />
                <link rel="stylesheet" type="text/css" href="$css" />   

                <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
                <script type="text/javascript">
                    $(function() {
                        $("li").click(function(e) {
                          e.preventDefault();
                          $("li").removeClass("selected");
                          $(this).addClass("selected");
                        });
                    });
                </script> 


            </head>
            <body>
            <div id = "header">

            </div>
HEAD;
    $headContent .="\n";
    return $headContent;
    }

    echo header1("title", 'url');
?>