1

使用 CakePHP,可以通过将以下内容放入视图中来插入普通的 JavaScript:

$this->Html->scriptStart(array('inline' => false));
echo 'alert("Hello world!");';
$this->Html->scriptEnd();

不幸的是,如果您有多个 echo 语句,所有文本都会被压缩成 1 长行。有什么方法可以拆分行并插入换行符?

我已经尝试将 \n 添加到 echo'd 语句的末尾,但无济于事。

我认为正确使用分号可以让 JS 在 1 行中正确运行,但这会带来痛苦的阅读和调试体验。

4

3 回答 3

2

如果您不需要,可以尝试不将其放入 PHP 中:

<?php $this->Html->scriptStart(array('inline' => false)); ?>
     alert("Hello world!");
     alert("Hello world!");
<?php $this->Html->scriptEnd(); ?>

然后只需使用普通的 js 格式。

或者,您可以使用PHP_EOL回显不在字符串文字中的换行符。

<?php
     $this->Html->scriptStart(array('inline' => false));
     echo 'alert("Hello world!");' . PHP_EOL;
     echo 'alert("Hello world!");';
     $this->Html->scriptEnd();
?>
于 2013-04-29T05:20:09.173 回答
0

我不确定我是否正确理解了您的问题,但请尝试转义您的问题,\n因为 php 会在您的 javascript 轮流之前将其解释为普通字符串,例如:

$first = "This is first line\\n";
$both  = $first . "This is second line";   
于 2013-04-29T05:25:58.410 回答
0

我最终通过使用 Js->buffer 解决了这个问题,如下所示:

echo $this->Js->buffer('$(\'<input type="button" id="instaSave" value="Save"/>\')
    .click(function(){ 
        $(this).val("Saving...");

        $(this).parents("form:first").ajaxSubmit({
            success: function(responseText, responseCode) {
                $(".food").each(function(fIndex){
                   ...
');
于 2013-05-11T05:58:03.513 回答