我有一个JavaScript文件,其中定义了变量并为其分配了值。是否可以使用C#读取.js文件并轻松检索变量和值?我知道变量名称是什么,但值将是一个json字符串。我希望我不必诉诸正则表达式。
编辑:我无法控制JavaScript文件的内容。第三方将文件放到某个位置,我需要将其取出,读取并解析它。
编辑2:好的,忘记我提到了json。这实际上与我的问题无关......在这一点上,这似乎没有一个简单的解决方案。所以我一行一行地读取.js文件,搜索变量名,然后获取值。以下代码供参考。using (StreamReader r = new StreamReader("myFile.js"))
{
while(r.Peek() >= 0)
{
var line = r.ReadLine();
if(line.IndexOf("myVariableName") > -1)
{
var arr = line.split("=");
var variable = arr[0].Trim();
var value = arr[1].Trim();
}
}
}
答案 0 :(得分:2)
我在浏览器帮助程序对象中遇到了类似的问题,我需要创建该文件以从Web生成的报告中提取数据并将其存储在本地文件系统中。
我按照以下方式访问js值:
mshtml.IHTMLDocument document = (mshtml.IHTMLDocument)this.Explorer.IWebBrowser_Document;
object script = document.Script;
if (script != null)
{
// Make the call:
var jsvar = script.GetType().InvokeMember("eval", BindingFlags.InvokeMethod, null, script, new object[] { "HIS_VisitNumber" });
// Cast...
_strHISVisit = (string)jsvar;
// Release the script object, and possibly the document object.
Marshal.ReleaseComObject(script);
}
这里this.Explorer是可以通过Band Object(BHO)获得的资源管理器对象。
但是,当然,只有当您能够利用具有加载和执行js的所有工具的浏览器(IE)时,这种方法才有可能。
如果你不能做这样的事情,我猜你需要的是一个完整的C#js解析器,还是我不能正确理解你的问题?
在后一种情况下,您可以使用Javascript .NET
答案 1 :(得分:1)
如果您是Web开发人员并且想要将数据从JavaScript文件(客户端)发送到C#文件(服务器端),则可以使用jQuery Ajax。您可以将变量传递给C#文件中的函数。请记住,您必须将[WebMethod]
属性添加到C#函数中,该函数必须为static
。
$.ajax({
type: "post",
url: "Default.aspx/YourMethodName",
contentType: "application/json; charset=utf-8",
dataType: "json",
data: JSON.stringify({ varOne: one , varTwo:two }),
success: function (v) {
alert("Success");
},
error: function (error) {
alert("Error");
},
complete: function () {
alert("Complete");
}
});