Javascript php 中嵌入的警报功能在解释客户端消息时存在问题

Javascript alert function embedded within php has issue in interpreting the message on the client side

我正在尝试使用 php 代码中的 javascript 警报功能在客户端显示消息。

//Show concept detail
public function showConceptDetail($concept){
    $msg ="";
    switch ($concept) {
        case 'class':
            $msg = 'Hey, I am single line with spaces';
        break;
        default:
        break;
    }
    return "alert('".$msg."')";
}

public function showListConcept(){
    $a= '$this->showConceptDetail()';
    $list = <<<LIST
    <ul>
        <li><a href="#" onClick= {$this->showConceptDetail('class')} >Class </a></li>
        <li><a href="#">Object </a></li>
        <li><a href="#">Member Variable </a></li>
        <li><a href="#">Member function</a></li>
        <li><a href="#">Inheritance</a></li>
        <li><a href="#">Parent class</a></li>
        <li><a href="#">Child Class</a></li>
        <li><a href="#">Polymorphism</a></li>
        <li><a href="#">Overloading</a></li>
        <li><a href="#">Data Abstraction</a></li>
        <li><a href="#">Encapsulation</a></li>
        <li><a href="#">Constructor</a></li>
        <li><a href="#">Destructor</a></li>

    </ul>
LIST;       
    echo "List of POO concepts: ".$list;
}

当我尝试使用函数 showListConcepts 时:

$a = new POOConcept();
$a->showListConcept();

每当我检查源时,我每次都会得到一个奇怪的输出:

<a href="#" onclick="alert('Class" −="" this="" is="" a="" programmer-defined="" data="" type,="" which="" includes="" local="" functions="" as="" well="" data.="" you="" can="" think="" of="" class="" template="" for="" making="" many="" instances="" the="" same="" kind="" (or="" class)="" object.')="">Class </a>

警报功能消息中的每个 space 由 ="" 交换;我不明白这是怎么回事。

我复制并粘贴了它,运行 您提供的代码。没有问题。我确实注意到 here/now 文档没有用引号引起来。 (http://php.net/manual/en/language.types.string.php)除此之外似乎没有问题。肯定还有别的问题。还有什么正在处理输出?您的代码或注释中是否有输出消息?

这是我名为 index.php 的完整示例文件,后跟命令行中的输出。

    <?php

class abc
{
//Show concept detail
public function showConceptDetail($concept){
    $msg ="";
    switch ($concept) {
        case 'class':
            $msg = 'Hey, I am single line with spaces';
        break;
        default:
        break;

    }
    return "alert('".$msg."')";
}

public function showListConcept(){
    $a= '$this->showConceptDetail()';
    $list = <<<LIST
    <ul>
        <li><a href="#" onClick= {$this->showConceptDetail('class')} >Class </a></li>
        <li><a href="#">Object </a></li>
        <li><a href="#">Member Variable </a></li>
        <li><a href="#">Member function</a></li>
        <li><a href="#">Inheritance</a></li>
        <li><a href="#">Parent class</a></li>
        <li><a href="#">Child Class</a></li>
        <li><a href="#">Polymorphism</a></li>
        <li><a href="#">Overloading</a></li>
        <li><a href="#">Data Abstraction</a></li>
        <li><a href="#">Encapsulation</a></li>
        <li><a href="#">Constructor</a></li>
        <li><a href="#">Destructor</a></li>

    </ul>
LIST;
    echo "List of POO concepts: ".$list;
  }
}  


$abc = new abc();
$abc->showListConcept();

?>

然后使用命令行。

sandbox>php  index.php
List of POO concepts:     <ul>
        <li><a href="#" onClick= alert('Hey, I am single line with spaces') >Class </a></li>
        <li><a href="#">Object </a></li>
        <li><a href="#">Member Variable </a></li>
        <li><a href="#">Member function</a></li>
        <li><a href="#">Inheritance</a></li>
        <li><a href="#">Parent class</a></li>
        <li><a href="#">Child Class</a></li>
        <li><a href="#">Polymorphism</a></li>
        <li><a href="#">Overloading</a></li>
        <li><a href="#">Data Abstraction</a></li>
        <li><a href="#">Encapsulation</a></li>
        <li><a href="#">Constructor</a></li>
        <li><a href="#">Destructor</a></li>

    </ul>

再想想: 如果您在警报周围加上引号会怎样? Html 如果没有引号,解析器会自动添加 =""。 onClick="{$this->showConceptDetail('class')}"