我试图从一个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