我試圖從一個C#(winforms)應用程序傳遞數據(JSON)到一個靜態的HTML/JavaScript文件,做一些畫布繪製呈現圖基於JSON對象中的細節。 html/javascript文件僅在瀏覽器中運行,不需要Web服務器。如果可能的話,我想保留HTML文件。從C#傳遞JSON數據到獨立的Javascript文件(沒有Web服務器)
由於沒有涉及服務器,我假設無法通過'get'或'post'傳遞數據?
我已經嘗試將JSON寫入用戶電腦上的文件,從C#應用程序(在JavaScript文件中)運行Process.Start()以使其在瀏覽器中打開,然後讓頁面讀取來自文件的JSON數據。這會導致「權限被拒絕錯誤」。
此外,我發現了以下評論: 「的HTML5的FileReader設施並允許您處理本地文件,但這些必須由用戶來選擇,你不能去翻過用戶硬盤尋找文件。」 從這裏:How to open a local disk file with Javascript?
如何我可以從我的應用程序的JavaScript文件中的數據,無須用戶干預?還有其他選擇嗎?
在此先感謝您的任何想法/幫助。
C#>序列化JSON,寫入文件,啓動JavaScript文件...
...
string json = JsonConvert.SerializeObject(this);
sendJson(json);
}
private void sendJson(string json)
{
Assembly assy = Assembly.GetExecutingAssembly();
string appRoot = Path.GetDirectoryName(assy.Location);
string pathToCurveFile = string.Format("{0}\\{1}", appRoot, "WebPages\\curve.htm");
string pathToJsonData = string.Format("{0}\\{1}", appRoot, "WebPages\\curveData.json");
File.WriteAllText(pathToJsonData, json);
}
的Javascript>嘗試讀取JSON文件當頁面加載
function init() {
var json;
var dataFilePath = 'file://C:/Temp/curveData.json';
var reader = new FileReader();
reader.onload = function (e) { payload = reader.result; }
reader.readAsText(dataFilePath);
json = JSON.parse(payload);
您可以嘗試使用.net瀏覽器控件並加載其中的網頁,在'#'後面傳遞數據,然後使用window.location.hash將其放入js中。 – Musa
你是如何打開html的?一個來自winform的瀏覽器控件?如果是這樣,你可以在該html中添加一個JS事件並從C#中調用它。如果你需要的話,我可以給你一個例子。你也可以用參數加載頁面。 – Manuel
從C#我正在使用Process.Start(somefile.htm)。我遠離瀏覽器控件的原因是因爲我使用的是HTML5畫布,我並不認爲瀏覽器控件可以支持,但可能需要進一步研究。 – beeker