[英]Print a div with data from ajax or jquery.get()
我有一個div:
<div id="contract"></div>
使用內部HTML的JHTML使用來自客戶端javascript的字符串和從我的服務器獲取的數據(HTML)由JQuery填充:
$('#submit').click(function () {
document.getElementById('contract').innerHTML = 'foobar';
var profile = $('#profile').val();
var query = {
'profile': profile
};
$.get('/foo/profileViewer', query, function (data) {
var result = $.parseJSON(data);
document.getElementById('contract').innerHTML += result ; //$('#contract').html(result); doesn't work either
})
});
我只想打印contract
div
。
我嘗試了此處和此處建議的JQuery答案,所有答案均指向div
,其中div
已經包含HTML開頭的文本,而不是從服務器獲取的文本。 奇怪的是,如果我刪除$.get
並實現提供的答案之一,那么"foobar"
確實會被打印出來。 如果我不刪除$.get
,則不會打印任何內容 。 我嘗試使用$.ajax
代替$.get
但這不能解決問題。 我在這里嘗試使用CSS解決方案,但是由於其中已經嵌入了CSS分頁媒體,因此弄亂了來自服務器端的數據(HTML)。 因此,我不想使用CSS解決方案。
當div
包含從服務器端獲取的數據時,有人可以建議我一個使用JQuery打印div
的好方法嗎?
走這邊
$('#contract').text(JSON.stringify(data));
要么
$('#contract').append(
$('<pre>').text(
JSON.stringify(data, null, ' ')
)
)
嘗試使用隱藏的iframe:
$('#submit').click(function (e) {
e.preventDefault();
$('#contract').empty();
var profile = $('#profile').val();
var query = {
profile: profile
};
$.get('/foo/profileViewer', query, function (data) {
$('body').append('<iframe id="printf" style="display:none;" name="printf"></iframe>');
$('#printf').contents().find('body').append(data);
window.frames["printf"].focus();
window.frames["printf"].print();
})
});
您不能直接打印標簽。但是此技巧可以幫助您:
<script language="javascript" type="text/javascript">
function printDiv(divID) {
//Get the HTML of div
var divElements = document.getElementById(divID).innerHTML;
//Get the HTML of whole page
var oldPage = document.body.innerHTML;
//Reset the page's HTML with div's HTML only
document.body.innerHTML =
"<html><head><title></title></head><body>" +
divElements + "</body>";
//Print Page
window.print();
//Restore orignal HTML
document.body.innerHTML = oldPage;
}
</script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.