【问题标题】:How would one echo this jQuery in PHP如何在 PHP 中回显这个 jQuery
【发布时间】:2011-06-14 14:47:49
【问题描述】:
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() )'&gt; 实际显示在页面上,因此 jQuery 不起作用!

我怎样才能正确地将它包含在回声中?

谢谢

【问题讨论】:

    标签: php jquery echo


    【解决方案1】:

    为什么不完全跳过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' />";
    

    【讨论】:

    • 我只是担心代码是 if 语句的一部分,所以我希望它包含在其中
    • 这并不能解决问题,即不正确地嵌套引号字符。
    • @benhowdle89:您也可以使用if 语句来做到这一点。检查更新的答案。
    • @David Dorward:很好。我现在已经解决了。
    【解决方案2】:

    像这样在字符串前面添加@符号

    echo @" and now you can have multiple lines
    

    希望对你有帮助

    【讨论】:

    • 这是 PHP,不是 .NET。 @ 抑制 PHP 中的错误,与 .NET 中的“不解释特殊字符”完全不同
    • 日本佬我明白了,别生气
    【解决方案3】:

    你有

    onsubmit='$('
    

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

    另外,感谢 knittl,PHP 插值变量中的双引号分隔字符串。所以你需要为 PHP 转义 $ 符号。

    这样写也更好:

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

    【讨论】:

    • 虽然这可能不是最好的方法,但他可以在 onsubmit 属性中使用双引号并将它们转义。最佳 -
    【解决方案4】:

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

    onsubmit='$('#datatodisplay').
    

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

    【讨论】:

      【解决方案5】:

      有几个问题……

      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】:

        试试这个

        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 将其解析为'$(' 然后获取&lt;div&gt; 中的第一个&gt; 并打印之后的所有内容。

        【讨论】:

          【解决方案7】:
          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】:

            有了这种变量,heredoc 的概念会非常有用

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

            【讨论】:

              【解决方案9】:

              对不起,这是正确答案哈哈

              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' />";
              

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

              【讨论】:

                猜你喜欢
                • 1970-01-01
                • 1970-01-01
                • 1970-01-01
                • 2014-07-22
                • 2016-08-23
                • 2020-06-12
                • 1970-01-01
                • 2019-07-03
                • 1970-01-01
                相关资源
                最近更新 更多