Функция оповещения Javascript, встроенная в php, имеет проблему при интерпретации сообщения на стороне клиента. - PullRequest
0 голосов
/ 29 августа 2018

Я пытаюсь использовать функцию предупреждения javascript в коде php для отображения сообщения на стороне клиента.

//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>

Каждый пробел в сообщении функции оповещения заменяется на = ""; Я не могу понять, что происходит.

1 Ответ

0 голосов
/ 29 августа 2018

Я скопировал и вставил его и запустил код, который вы предоставили. Там не было никаких проблем. Я заметил, что здесь / сейчас документы, где не в кавычках. (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 ( 'класс')}"

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...