2013-05-21 60 views
1

我想將一些Backbone集合中的一些數據導出到一個csv文件。是否可以從不同頁面的代碼中訪問java腳本數據?

到目前爲止,我打開使用Java腳本一個新的出口頁面,像這樣

   var href = [];  
       href.push('ExportAnalysis.aspx?'); 
       href.push('ParamSet=' + this.document.analysisParameterSetView.selectedParamSet + '&'); 
       href.push('Start=' + start 

Date + '&'); 
      href.push('Finish=' + endDate + '&'); 
      frames["exportIFrame"].location.href = href.join(''); 

然後在代碼exportAalysis.aspx的背後,我從查詢字符串掠變量獲取數據,建築啓動csv文件並像這樣返回文件。

// Get the export parmaters from the query string 
     var paramSet = Request["ParamSet"]; 
     var startUnix = int.Parse(Request["Start"]); 
     var finishUnix = int.Parse(Request["Finish"]); 
     var start = DateTime.Parse("1970-01-01").AddSeconds(startUnix); 
     var finish = DateTime.Parse("1970-01-01").AddSeconds(finishUnix); 

     // GET DATA using Parameters 

     var filename = "analysisExport"; 
     var content = "1,2"; 

     Response.Clear(); 
     Response.ContentType = "application/x-unknown"; 
     Response.AddHeader("Content-Disposition", "attachment;filename=" + filename); 
     Response.Write(content); 

     Response.End(); 
    } 

這工作正常,但它似乎有點低效,因爲我必須得到我需要兩次的數據。一次用於主頁面並再次用於導出頁面。

它是一個很遠的鏡頭但是有可能從導出頁面背後的代碼的第一頁獲取數據?如果這是所有的客戶端,我可以使用window.opener.document來獲得開啓者頁面,我可以做類似於asp.net

或者我完全偏離軌道,並且有更好的方法來實現這一點。

回答

1

這隻有在iframe和主窗口之間的協議和域匹配時纔有效。 所有的代碼是JavaScript的

的iframe父:

var pDoc = window.parent.document; 
var pWin = window.parent.window; 

文件設置爲iFrame:

var cDoc = document.getElementById("exportIFrame").contentDocument; 
var cWin = document.getElementById("exportIFrame").contentWindow; 

要呼籲家長腳本:

pWin.yourFunction("parameter"); 

要調用腳本一個iframe:

cWin.yourFunction("parameter"); 
相關問題