2017-04-18 20 views
2

我有一个返回对象数组的ajax请求,我需要将它们返回到另一页进行打印。但我不知道如何将这个对象数组传递给另一个选项卡或页面。JS - 将对象数组传递到新窗口

$.ajax({ 
     type: "POST", 
     url: "atualizeOrder", 
     data: JSON.stringify(ordens), 
     contentType: "application/json; charset=utf-8", 
     dataType: "json", 
     success: function(list) { 
      console.log(list); 


      var printWindow = window.open('/erp/index/test'); 
      printWindow.document.write(list); 
      printWindow.addEventListener('load', function(){ 
       printWindow.print(); 
       printWindow.close(); 
      }, true); 



     } 
    }); 
+0

什么是你的代码目前呢? – 4castle

+0

用这个返回一个新窗口:[object Object] – scooby

+0

尝试使用'printWindow.document.write(JSON.stringify(list));' – 4castle

回答

1

只需指定数组中的子窗口:

printWindow.myList = list; 

那么这将是访问的子窗口中执行一个全局变量myList

您还可以预渲染的任何JavaScript代码LIS在父窗口和追加生成的HTML的子窗口,你可以这样做jQuery中或模板引擎(如胡须)

var renderedListHTML = Mustache.render("HTML TEMPLATE HERE", list); 
printWindow.document.write(renderedListHTML); 
+0

感谢您的询问,但我该如何操作变量myList?当我试图在新页面上访问这个变量时,它是未定义的 – scooby

+0

在您的erp/index/test页面中,只需添加一个脚本,然后将其作为全局变量访问。 –

0

你试过这样的事吗?

var printWindow = window.open('/erp/index/test'); 
printWindow.list = list; 

这里“list”成为新窗口对象的一个​​属性,所以你可以很容易地操纵它。