2016-08-11 1 views
2

В настоящее время у меня есть проект PHP, который использует Zend Framework. Когда пользователь нажимает кнопку, я использую частичное, чтобы получить HTML, который нужно добавить на страницу. Проблема заключается в том, что HTML, кажется, возвращается в виде HTML, а не строка:Преобразование HTML в Valid String

document.getElementById("active_projects").innerHTML='<?php echo $this->partial("project/project/activeprojectstable.phtml", array(
    "headers" => $headers, 
    "active" => $this->active 

))?>'; 

.innerHTML = принимает строку, но HTML имеет новые строки и специальные символы, которые она не принимает. Как преобразовать HTML в допустимую строку HTML?


Обновление:

Для лучшего представления о HTML вырабатываться парциальное, что вызывает проблемы, это то, что он имеет значение:

error from html

+0

Вам нужно изменить, что '=' к '(' прежде всего '.innerHTML =» ....), '' Вместо этого использовать .innerHTML (...) ' – ArtisticPhoenix

+0

@ArtisiticPhoenix Я так не думаю: http://www.tizag.com/javascriptT/javascript-innerHTML.php –

+0

Я думал о стиле jQuery, вне зависимости от того, добавляется ли' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '' '). Возможно, это не проблема, а проблема, тем не менее. – ArtisticPhoenix

ответ

3

Попробуйте герметизирующего ваш частичный в script тег с type="text/template". Браузер не поймет, какой тип скрипта он есть, поэтому он не выполнит его. Тем не менее, вы можете получить доступ к его содержимому, даже если они многострочные.

<script type="text/template" id="active_projects_template"> 
    <?php echo $this->partial("project/project/activeprojectstable.phtml", array(
    "headers" => $headers, 
    "active" => $this->active 
))?> 
</script> 

<script type="text/javascript"> 
    // ... 
    document.getElementById("active_projects").innerHTML=document.getElementById("active_projects_template").innerHTML; 
    // ... 
</script> 

Аналогичная картина используется в шаблонах AngularJS (type установлен в text/ng-template).

+0

, которая сработала! Спасибо! –

0

Try html_entity_decode: http://www.w3schools.com/php/func_string_html_entity_decode.asp

<?php 
$str = "&lt;&copy; W3S&ccedil;h&deg;&deg;&brvbar;&sect;&gt;"; 
echo html_entity_decode($str); 
?> 

HTML o utput из кода выше (View Source):

<!DOCTYPE html> 
<html> 
<body> 
<© W3Sçh°°¦§> 
</body> 
</html> 

Выходной браузер кода выше:

<© W3Sçh°°¦§> 
+0

Похоже, что я получаю: 'Uncaught SyntaxError: недопустимый или неожиданный токен', потому что HTML имеет новую строку –