簡體   English   中英

使用來自ajax或jquery.get()的數據打印div

[英]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();       
    })
});

https://jsfiddle.net/njezoem5/

您不能直接打印標簽。但是此技巧可以幫助您:

<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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM