Чтобы определить, почему код PHP не работает в коде JavaScript , нам нужно понять, что такое клиентский и серверный язык и как они работают.
Серверные языки (PHP и т. д.) : они извлекают записи из баз данных, поддерживают состояние через HTTP-соединение без состояния и выполняют много вещи, требующие безопасности. Они находятся на сервере, эти программы никогда не имеют своего исходного кода для пользователя
[/g16] image attr
Хотя с другой стороны Клиентский язык на стороне клиента (например, JavaScript) находится в браузере и запускается в браузере, Сценарии на стороне клиента обычно относятся к классу компьютерных программ в Интернете, которые выполняются на стороне клиента, в веб-браузере пользователя, а не на стороне сервера .
JavaScript отображается пользователю и может быть легко изменен, поэтому для обеспечения безопасности мы не должны полагаться на JavaScript.
Итак, когда вы делаете запрос HTTP на сервере, чем сервер, сначала внимательно читает файл PHP, чтобы узнать, есть ли какие-либо задачи, которые необходимо выполнить, и отправлять ответ на клиентскую сторону и снова, как @deceze сказал * Как только PHP закончил вывод ответа, сценарий заканчивается, и на сервере ничего не произойдет, пока не появится новый запрос HTTP . *
[/g17]
Итак, что мне делать, если мне нужно вызвать PHP? Это зависит от того, как вам это нужно: либо перезагружая страницу, либо используя вызов AJAX.
- Вы можете выполнить перезагрузку страницы и отправить запрос HTTP
- вы можете сделать вызов AJAX с помощью JavaScript, и это не требует перезагрузки страницы
Хорошо Чтение:
Вы не можете, Предварительный просмотр является особенностью браузера и поэтому должен быть защищен от вызова JavaScript, поскольку это будет угрозой безопасности.
Вот почему ваш пример использует Active X, который обходит проблемы безопасности JavaScript.
Вместо этого используйте таблицу стилей печати, которую вы уже должны иметь, и покажите ее для экрана media =, вместо печати = print.
Прочитайте Alist Apart: переход на печать для хорошей статьи по теме стилей печати.
Это можно сделать с помощью javascript. Скажем, ваш код html / aspx идет следующим образом:
<span>Main heading</span>
<asp:Label ID="lbl1" runat="server" Text="Contents"></asp:Label>
<asp:Label Text="Contractor Name" ID="lblCont" runat="server"></asp:Label>
<div id="forPrintPreview">
<asp:Label Text="Company Name" runat="server"></asp:Label>
<asp:GridView runat="server">
//GridView Content goes here
</asp:GridView
</div>
<input type="button" onclick="PrintPreview();" value="Print Preview" />
Здесь, нажав кнопку «Предварительный просмотр», мы откроем окно с данными для печати. Обратите внимание, что forPrintPreview является идентификатором div. Функция предварительного просмотра печати выглядит следующим образом:
function PrintPreview() {
var Contractor= $('span[id*="lblCont"]').html();
printWindow = window.open("", "", "location=1,status=1,scrollbars=1,width=650,height=600");
printWindow.document.write('<html><head>');
printWindow.document.write('<style type="text/css">@media print{.no-print, .no-print *{display: none !important;}</style>');
printWindow.document.write('</head><body>');
printWindow.document.write('<div style="width:100%;text-align:right">');
//Print and cancel button
printWindow.document.write('<input type="button" id="btnPrint" value="Print" class="no-print" style="width:100px" onclick="window.print()" />');
printWindow.document.write('<input type="button" id="btnCancel" value="Cancel" class="no-print" style="width:100px" onclick="window.close()" />');
printWindow.document.write('</div>');
//You can include any data this way.
printWindow.document.write('<table><tr><td>Contractor name:'+ Contractor +'</td></tr>you can include any info here</table');
printWindow.document.write(document.getElementById('forPrintPreview').innerHTML);
//here 'forPrintPreview' is the id of the 'div' in current page(aspx).
printWindow.document.write('</body></html>');
printWindow.document.close();
printWindow.focus();
}
Обратите внимание, что кнопки «печать» и «отмена» имеют класс «без печати» css, поэтому эти кнопки не будут отображаться в печати.
Я думаю, что лучшее, что возможно в кросс-браузерном JavaScript, - window.print()
, которое (в Firefox 3 для меня) вызывает диалог «печать», а не диалог предварительного просмотра.
PrintUtils.printPreview(PrintPreviewListener);
– Oleg Vaskevich 20 February 2012 в 06:36