Javascript 在查看源代码时,如何使代码处于单行中?

Javascript 在查看源代码时,如何使代码处于单行中?,javascript,forms,zend-framework,zend-form,Javascript,Forms,Zend Framework,Zend Form,我正在尝试创建一个动态添加输入的按钮,因为我使用Zend framework,所以我使用此方法从表单文件获取输入: 但我得到了这个错误:uncaughtsyntaxerror:意外标识符 该添加按钮的jquery函数是: $(document).ready(function (){ var j = "<?php echo $this->formm->getElement('refA'); ?>"; $("#add-more").click(function

我正在尝试创建一个动态添加输入的按钮,因为我使用Zend framework,所以我使用此方法从表单文件获取输入:

但我得到了这个错误:uncaughtsyntaxerror:意外标识符

该添加按钮的jquery函数是:

$(document).ready(function (){
    var j = "<?php echo $this->formm->getElement('refA'); ?>";
    $("#add-more").click(function(){   
        $(".row").append(j);
    });
});
当我点击该错误时,它会显示我的错误位置,它似乎使用了:

$(document).ready(function (){
    var j = "<label for="refA" class="optional">Article:</label>
             <select name="refA" id="refA" class="form-control">
               <option value="test1" label="test1">test1</option>
             </select>";
    $("#add-more").click(function(){   
        $(".row").append(j);
    });  
});

有没有可能在单行中生成代码,这样我就可以使按钮正常工作?

看起来这是一个引用问题-PHP插入的数据有双引号,这会不断终止字符串。尝试用单引号将其括起来-使用refA的转义符:


$(document).ready(function (){
    var j = '<?php echo $this->formm->getElement(\'refA\'); ?>';
    $("#add-more").click(function(){   
        $(".row").append(j);
    });
});
好的,在做了更多的挖掘之后,你需要在它之前把那些引号和空格取出来。不幸的是,我不是PHP爱好者——所以我希望语法是正确的——想法是,从refA获取数据并将其存储在$message中——然后去掉任何空格并转义任何引号,然后将值回显为“j”:

$(document).ready(function (){
   var j = '<?php $message = $this->formm->getElement("refA"); $message = preg_replace("/\r?\n/", "\\n", addslashes($message));echo $message?>'
   $("#add-more").click(function(){   
       $(".row").append(j);
   });
});
可在此处找到PHP方法:

另一个完全解决这个问题的选项是使用es6模板字符串返回刻度


$(document).ready(function (){
    var j = `<?php echo $this->formm->getElement("refA"); ?>`;
    $("#add-more").click(function(){   
        $(".row").append(j);
    });
});
大多数现代浏览器都会处理es6

正如凯尔所说,你正面临一个引用问题。但是,和他所说的不同,PHP标记中的引号不能转义,因为它们是在服务器端呈现的

这应该可以做到:

window.onload=函数{ $document.readyfunction{ var j=; $add more.单击函数{ $.row.appendj; }; }; } 编辑:查看您的屏幕截图和其他注释,似乎您正在尝试在加载之前访问jQuery$,我想您正在加载布局末尾的所有JS依赖项。 由于无法在JS文件中使用PHP代码,因此有两种选择:

在模板ajouter.phtml中创建一个JS变量,如var inputTemplate=;,并在JS文件中使用该变量 确保仅当页面已完全加载时才执行JS代码段,因此使用window.onload=function{}
就我个人而言,我建议你做第一个选择。在phtml中插入JS代码在概念上是错误的,因为如果您决定不再使用jQuery,就不必在所有模板中查找这些代码段。

我尝试过,但它在visual studio代码中显示了这一点:语法错误,意外的重构\';?>T_CONSTANT_封装的_字符串,应为标识符T_STRING是否将整行用单引号括起来。然后在refA前面和后面添加\escape字符?从这个错误来看,您似乎只逃过了第二个错误——如在中,而不是在refA中——切换到“refA\”——请告诉我这是否正确。trickJS代码呈现在客户端,而PHP呈现在服务器端。因此,PHP中的引号不能转义。我尝试过,但得到了以下结果:uncaughtreferenceerror:$未定义。您不是在使用jQuery吗?您遇到了哪个错误?如果您获取的是T_CONSTANT_ENCAPSED_字符串,请检查您是否没有转义refA引号。在visual studio中,我没有收到任何错误,但我获取的是未捕获的语法错误:意外标识符错误您可以将完整错误与其堆栈一起发布吗?并显示生成该错误的确切代码?完整错误及其堆栈,而不仅仅是错误消息。另外:显示生成该错误的确切代码