Как можно повторить этот JQuery в PHP - PullRequest
1 голос
/ 24 января 2011
<code>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'>
Сохранить данные таблицы в Excel
<input type='hidden' id='datatodisplay' name='datatodisplay' />
       </form>
       <input class='noPrint' type='button' id='print' value='Print' />";
</code>

Когда я запускаю страницу, я не получаю сообщение об ошибке анализа, однако на странице действительно отображается ').append( $('#dataTable').eq(0).clone() ).html() )'>, поэтому jQuery не работает!

Как я могу включить его в эхо правильно?

Спасибо

Ответы [ 9 ]

4 голосов
/ 24 января 2011

Почему бы не пропустить echo в целом, как это:

<code> //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'>

Сохранить данные таблицы в Excel

<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
</code>

РЕДАКТИРОВАТЬ : у вас также есть неправильно вложенные символы кавычек в onsubmit. Код, приведенный выше, также исправляет это путем преобразования этих кавычек в двойные кавычки.

Вы также можете использовать echo и экранировать такие кавычки, как это:

<code>  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'>

Сохранить данные таблицы в Excel

<input type='hidden' id='datatodisplay' name='datatodisplay' />
   </form>
   <input class='noPrint' type='button' id='print' value='Print' />";
</code>
3 голосов
/ 24 января 2011

У вас есть

onsubmit='$('

Одиночные кавычки внутри значений атрибутов, разделенных одинарными кавычками, должны быть представлены как &#39;, поэтому они обрабатываются как данные, а не как другой конец значения атрибута.

Кроме того, и спасибо knittl, строки с двойными кавычками в PHP интерполируют переменные.Поэтому вам нужно экранировать символы $ для PHP.

Это также было бы лучше написать, используя:

  • Ненавязчивый JavaScript
    • Таким образом, хранение JS в отдельном файле и отсутствие необходимости беспокоиться о вложенных кавычках
  • Блок HTML вместо оператора echo (условные выражения, обернутые вокруг него, по-прежнему применяются)
    • Позволяет избежать трехуровневых кавычек (PHP, HTML, JavaScript)
    • Избегать необходимости беспокоиться о интерполяции переменных в PHP
1 голос
/ 24 января 2011

С такими переменными концепция heredoc была бы весьма полезна

$variable = <<<XYZ
........
........
XYZ;
0 голосов
/ 24 января 2011

Извините, это правильный ответ lol

<code>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'>
Сохранить данные таблицы в Excel
<input type='hidden' id='datatodisplay' name='datatodisplay' />
   </form>
   <input class='noPrint' type='button' id='print' value='Print' />";
</code>

Почему ты так зол.хе-хе:)

0 голосов
/ 24 января 2011
<code>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'>
"; echo "

Сохранить данные таблицы в Excel

"; эхо "
<input type='hidden' id='datatodisplay' name='datatodisplay' />";
echo "</form>";
echo "<input class='noPrint' type='button' id='print' value='Print' />";
</code>

попробуй это! ;) вам нужно экранировать $ с помощью \, и не должно быть \ n (новая строка в ответе), поэтому несколько эхо или вы все можете поместить в переменную, а затем повторить ее в конце!

0 голосов
/ 24 января 2011

попробуйте

<code>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'>

Сохранить данные таблицы в Excel

<input type='hidden' id='datatodisplay' name='datatodisplay' />
       </form>
       <input class='noPrint' type='button' id='print' value='Print' />";
</code>

у вас есть '$('#datatodisplay'). html анализирует это как '$(', затем берет первый >, который находится в <div> и печатает все, что после.

0 голосов
/ 24 января 2011

Есть несколько вопросов ...

php подставляет переменные в двойные кавычки ("$var"), с их значением.

вам придется либо использовать одинарные кавычки и экранировать другие одинарные кавычки, либо использовать heredoc:

<code>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">

Сохранить данные таблицы в Excel

<input type="hidden" id="datatodisplay" name="datatodisplay" />
       </form>
       <input class="noPrint" type="button" id="print" value="Print" />
EOT;
</code>

Вы также можете выводить html напрямую, без php

<code>// 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">

Сохранить данные таблицы в Excel

<input type="hidden" id="datatodisplay" name="datatodisplay" />
</form>
<input class="noPrint" type="button" id="print" value="Print" />
<?php // resume php script
</code>

Более того, обработчики событий javascript не должны объявляться как встроенные. использовать JavaScript для создания и применения их к элементам DOM

0 голосов
/ 24 января 2011

Вы не должны использовать echo для этого, вы можете просто безопасно остановить PHP на секунду.Похоже, ошибка в HTML:

onsubmit='$('#datatodisplay').

HTML считает, что отправка составляет всего $ (, вместо этого следует использовать ".

0 голосов
/ 24 января 2011

Добавьте знак @ перед строкой, как это

echo @" and now you can have multiple lines

Надеюсь, это поможет

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...