如何在PHP中回显这个jQuery

时间:2011-01-24 15:55:28

标签: php jquery echo

echo "<form class='noPrint' action='demo/saveToExcel.php' method='post' target='_blank'
       onsubmit='$('#datatodisplay').val( $('<div>').append( $('#dataTable').eq(0).clone() ).html() )'>
       <pre><input id='excel' type='image' src='img/file.png'></pre>
       <p id='save'>Save table data to Excel</p>
       <pre><input type='hidden' id='datatodisplay' name='datatodisplay' />
       </form>
       <input class='noPrint' type='button' id='print' value='Print' />";

当我运行页面时,我没有得到解析错误,但').append( $('#dataTable').eq(0).clone() ).html() )'>实际显示在页面上,因此jQuery不起作用!

如何正确地将其包含在回声中?

由于

9 个答案:

答案 0 :(得分:4)

为什么不像这样完全跳过echo

 //your PHP code before this echo statement

 //let us say this is part of a IF statement

 if(true)
 {
 ?>

 <form class='noPrint' action='demo/saveToExcel.php' method='post' target='_blank'
   onsubmit="$('#datatodisplay').val( $('<div>').append( $('#dataTable').eq(0).clone() ).html() )">
   <pre><input id='excel' type='image' src='img/file.png'></pre>
   <p id='save'>Save table data to Excel</p>
   <pre><input type='hidden' id='datatodisplay' name='datatodisplay' />
   </form>
   <input class='noPrint' type='button' id='print' value='Print' />

 <?php

 } //if ends here
 // continue with your PHP code

编辑:您在onsubmit中也有不正确嵌套的引号字符。上面给出的代码也通过将这些引号转换为双引号来修复它。

您也可以使用echo并转义这样的引号:

  echo "<form class='noPrint' action='demo/saveToExcel.php' method='post' target='_blank'
   onsubmit=\"$('#datatodisplay').val( $('<div>').append( $('#dataTable').eq(0).clone() ).html() )\">
   <pre><input id='excel' type='image' src='img/file.png'></pre>
   <p id='save'>Save table data to Excel</p>
   <pre><input type='hidden' id='datatodisplay' name='datatodisplay' />
   </form>
   <input class='noPrint' type='button' id='print' value='Print' />";

答案 1 :(得分:3)

你有

onsubmit='$('

用单引号分隔的属性值中的单引号必须表示为&#39;,因此它们被视为数据,而不是属性值的另一端。

此外,并且归功于knittl,PHP引用变量中的双引号分隔字符串。所以你需要逃避PHP的$标志。

这也可以使用以下方法编写:

  • Unobtrusive JavaScript
    • 因此将JS保存在单独的文件中,而不必担心嵌套引号
  • 一个HTML块而不是echo语句(包含它的条件仍然适用)
    • 让您避免使用三个级别的引号(PHP,HTML,JavaScript)
    • 避免担心PHP中的变量插值

答案 2 :(得分:1)

使用这种变量,heredoc概念非常有用

$variable = <<<XYZ
........
........
XYZ;

答案 3 :(得分:0)

在此字符串前面添加@符号

echo @" and now you can have multiple lines

我希望这会有所帮助

答案 4 :(得分:0)

你不应该使用echo,你可以安全地停止PHP一秒钟。 错误似乎在HTML中,如下:

onsubmit='$('#datatodisplay').

HTML认为onsubmit只是 $(,你应该使用“代替。

答案 5 :(得分:0)

有几个问题......

php用双引号字符串("$var")替换变量及其值。

你要么必须使用单引号并转义其他单引号,要么使用heredoc:

echo <<<EOT
       <form class="noPrint" action="demo/saveToExcel.php" method="post" target="_blank"
       onsubmit="$('#datatodisplay').val( $('<div>').append( $('#dataTable').eq(0).clone() ).html() )">
       <pre><input id="excel" type="image" src="img/file.png"></pre>
       <p id="save">Save table data to Excel</p>
       <pre><input type="hidden" id="datatodisplay" name="datatodisplay" />
       </form>
       <input class="noPrint" type="button" id="print" value="Print" />
EOT;

你也可以直接输出你的html,不用php

// suspend php script
?>
<form class="noPrint" action="demo/saveToExcel.php" method="post" target="_blank"
  onsubmit="$('#datatodisplay').val( $('<div>').append( $('#dataTable').eq(0).clone() ).html() )">
<pre><input id="excel" type="image" src="img/file.png"></pre>
<p id="save">Save table data to Excel</p>
<pre><input type="hidden" id="datatodisplay" name="datatodisplay" />
</form>
<input class="noPrint" type="button" id="print" value="Print" />
<?php // resume php script

此外,javascript事件处理程序不应该内联声明。使用javascript创建并将它们应用于DOM元素

答案 6 :(得分:0)

试试这个

echo "<form class='noPrint' action='demo/saveToExcel.php' method='post' target='_blank'
       onsubmit='$(\"#datatodisplay\").val( $(\"<div>\").append( $(\"#dataTable\").eq(0).clone() ).html() )'>
       <pre><input id='excel' type='image' src='img/file.png'></pre>
       <p id='save'>Save table data to Excel</p>
       <pre><input type='hidden' id='datatodisplay' name='datatodisplay' />
       </form>
       <input class='noPrint' type='button' id='print' value='Print' />";

你有'$('#datatodisplay'). html将其解析为'$(',然后获取>中的第一个<div>,然后打印所有内容。

答案 7 :(得分:0)

echo "<form class='noPrint' action='demo/saveToExcel.php' method='post' target='_blank'";
echo "onsubmit='\$(\'#datatodisplay\').val(\$(\'<div>\').append(\$(\'#dataTable\').eq(0).clone() ).html() )'>";
echo "<pre><input id='excel' type='image' src='img/file.png'></pre>";
echo "<p id='save'>Save table data to Excel</p>";
echo "<pre><input type='hidden' id='datatodisplay' name='datatodisplay' />";
echo "</form>";
echo "<input class='noPrint' type='button' id='print' value='Print' />";
试试这个! ;)你必须用\来逃避$,并且不应该有\ n(响应中的新行)这就是为什么多个回声或者你们都可以变量然后在结束时回显它!

答案 8 :(得分:0)

对不起,这是正确答案lol

echo "<form class='noPrint' action='demo/saveToExcel.php' method='post' target='_blank'
   onsubmit=\"$('#datatodisplay').val( $('<div>').append( $('#dataTable').eq(0).clone() ).html() )\">
   <pre><input id='excel' type='image' src='img/file.png'></pre>
   <p id='save'>Save table data to Excel</p>
   <pre><input type='hidden' id='datatodisplay' name='datatodisplay' />
   </form>
   <input class='noPrint' type='button' id='print' value='Print' />";

你为什么这么生气呵呵:)