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不起作用!
如何正确地将其包含在回声中?
由于
答案 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='$('
用单引号分隔的属性值中的单引号必须表示为'
,因此它们被视为数据,而不是属性值的另一端。
此外,并且归功于knittl,PHP引用变量中的双引号分隔字符串。所以你需要逃避PHP的$
标志。
这也可以使用以下方法编写:
echo
语句(包含它的条件仍然适用)
答案 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' />";
你为什么这么生气呵呵:)