Как поместить PHP и HTML-код, подобный тексту, в javascript var. (innerHTML)?

#javascript #php #mysql

#javascript #php #mysql

Вопрос:

Я бы хотел поместить свой код в javascript var таким образом :

 function myFunction(){

var switch = document..(etc..)....style.backgroundcolour;

var somethink2 = 'red';      <----- I tell about it

switch = somethink2;

}
  

и после этого мой цвет фона будет переключаться после использования функции.

Я не могу этого сделать с помощью PHP-кода (мое кодовое соединение с базой данных sql), потому что у меня нет «и «.

«dane» (в getElementById()) в моем приведенном ниже коде есть, и я хочу поместить этот PHP-код в этот div.

Ребята, пожалуйста, помогите мне 🙂

С уважением!

 function swap(){
 var zawartosc =


 <?php $a4="SELECT silnik FROM marki WHERE model = 'A4'"; 

 $result2 = mysqli_query($connection,$a4);
 echo "<br>";
 echo "<table border='1'>";                 // I WANT PUT THIS LIKE A TEXT
 while ($row = mysqli_fetch_assoc($result2)) {
     echo "<tr>";
     foreach ($row as $field => $value) { 
         echo "<td>" . $value . "</td>"; 
     }
     echo "</tr>";
 }
 echo "</table>";
 ?>

 document.getElementById("dane").innerHTML = zawartosc;
}
  

Комментарии:

1. var somethink2 = '<?php echo $var;?>';

2. @ArtisticPhoenix Не забывайте об экранировании JavaScript.

3. Но у меня есть проблема в линии, как это: <?php $a4=»SELECT silnik FROM marki WHERE model like ‘A4’ «; and when i use to much » and ‘ and i cant do it 🙁

4. Вы также можете поместить произвольные данные в свой HTML, используя атрибуты данных , чтобы ваш JavaScript мог извлекать эти данные и использовать их для любых целей, которые вы имеете в виду. Это разделение часто чище, чем PHP, пишущий JavaScript.

5. Использовать HEREDOC вместо " или NOWDOC вместо ' See php.net/manual/en/… Это слишком абстрактно для ответа, Т. Е. У вас недостаточно кода, чтобы знать, как это сделать.

Ответ №1:

Что-то вроде этого:

  $a4="SELECT silnik FROM marki WHERE model = 'A4'"; 

 $result2 = mysqli_query($connection,$a4);
 $html = [];

 $html[] = "<br>";
 $html[] = "<table border='1'>";                 // I WANT PUT THIS LIKE A TEXT


 while ($row = mysqli_fetch_assoc($result2)) {
     $html[] = "<tr>";
     foreach ($row as $field => $value) { 
         $html[] = "<td>" . $value . "</td>"; 
     }
     $html[] = "</tr>";
 }
 $html[] = "</table>";

 $html = json_encode($html); //'["<br>","<table border='1'>", ...]'
 ?>

 document.getElementById("dane").innerHTML = <?php echo $html;?>.join("n"); //no quotes needed
 //document.getElementById("dane").innerHTML = ["<br>","<table border='1'>", ...].join("n");
  

Или вы можете просто обращаться с ним как с обычной строкой, но это не то, что я бы предпочел делать.

  $html = implode($html);
 ?>

 document.getElementById("dane").innerHTML = "<?php echo $html;?>"; //careful with quotes here
  

Другими словами, не выводите данные из PHP напрямую, вместо этого создайте массив. Это намного чище, так как вы можете объединить это в одну переменную, а затем использовать ее.

Например:

 //timeout for demonstration purposes
setTimeout(function(){
  document.getElementById("dane").innerHTML = [
     "<br>",
      "<table border='1'>",
         "<tr>",
             "<td>foo</td>",
              "<td>bar</td>",
         "</tr>",
         "<tr>",
             "<td>biz</td>",
              "<td>baz</td>",
         "</tr>",
      "</table>"
  ].join("n");
},500);  
 table{width:100px;}  
 <div id="dane"></div>  

Мне нравится использовать join (это как implode) для многострочных строк в JS (даже в моих плагинах). В этом случае он хорошо работает json_encode с.

По сути, мы преобразуем этот массив HTML в строку JSON, которая становится реальным массивом в JS, затем мы позволяем JS выполнять imploding with join . В основном потому, что массивы не требуют использования кавычек, поэтому это позволяет избежать любых проблем, если у нас есть кавычки в нашем html.

Рассмотрим это (используя только строки):

 <?php  
//HEREDOC
$html = <<<HTML
     <table border='1' style="color:red;" >
HTML;  
?> 
document.getElementById("dane").innerHTML = '<?php echo $html;?>'; 
document.getElementById("dane").innerHTML = "<?php echo $html;?>"; 
  

Что становится следующим:

  document.getElementById("dane").innerHTML = '<table border='1' style="color:red;">'; //syntax error
 document.getElementById("dane").innerHTML = "<table border='1' style="color:red;">"; //syntax error
  

Из того, что я вижу " , на данный момент вам может сойти с рук, но если вы поместите их в свой HTML, у вас, вероятно, будут проблемы (если вы просто используете строки). Использование join позволяет избежать этого

  document.getElementById("dane").innerHTML = ["<table border='1' style="color:red;">"].join("n"); //json_encode knows how to escape " for json.
  

Надеюсь, это поможет!