使用ajax或jquery.get()中的数据打印div

我有一个div:

jQuery使用innerHTML填充来自客户端javascript和从我的服务器获取的数据(HTML)的字符串:

 $('#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 已经包含HTML中的文本开头的答案,而不是从服务器获得的东西。 奇怪的是,如果我删除$.get并实现其中一个答案, "foobar"会打印出来。 如果我不删除$.get ,则不会打印任何内容 。 我尝试使用$.ajax而不是$.get但这并不能解决问题。 我尝试在这里使用CSS解决方案,但这会混淆来自服务器端的数据(HTML),因为它已经嵌入了CSS分页媒体。 因此,我不想使用CSS解决方案。

div包含从服务器端获得的数据时,有人可以建议我使用JQuery打印div的好方法吗?

走这条路

 $('#contract').text(JSON.stringify(data)); 

要么

 $('#contract').append( $('
').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(''); $('#printf').contents().find('body').append(data); window.frames["printf"].focus(); window.frames["printf"].print(); }) }); 

https://jsfiddle.net/njezoem5/

你不能直接打印标签。但这个技巧可以帮助: