我需要进行DOM替换,如下所示:
$("#target").html('<?php echo $html?>');
$html
变量可能是复杂的标记
$html = '<div>
<input type="text" name="test" />
</div>';
当然我需要某种转义,或者javascript引擎会在第一个crlf或引用时出现语法问题。在rails中有一个简单的函数escape_javascript
,它非常容易。 cakephp有什么相似之处吗?
答案 0 :(得分:1)
我认为使用
$("#target").html('<?php echo $this->element("element_path"); ?>');
更有意义。但这取决于你的element_path.ctp文件中的内容。 另一方面,像这样放置替换HTML有点奇怪。特别是如果它是lott,我会进行ajax调用来加载HTML并让Controller函数返回元素的内容。
$("#target").html('Loading...').load('/myController/loadHtml/');
和myController
function loadHtml(){
$this->layout = false;
}
和功能app / View / my / load_html.ctp的视图:
<?php echo $this->element("element_path"); ?>
答案 1 :(得分:0)
您可以使用requestAction
执行此操作在您的视图文件中添加以下代码
$html = $this->requestAction('/tests/func_name');
echo $this->Html->scriptBlock('
$("#target").html('. $this->Js->value($html) .');
');
在你的TestsController中。
public function func_name() {
$this->layout = 'layout_name'; // The layout you want here for design.
$this->render('/Elements/element_name'); // you can directly render the content of element by writing like this.
}