繁体   English   中英

C#-读取JavaScript文件和访问变量

[英]C# - Read JavaScript file and access variable

我有一个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();
      }
    }
}

我需要创建一个浏览器帮助器对象中的类似问题,以便从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对象(BHO)使用的资源管理器对象。

但是,当然,只有当您能够利用具有加载和执行js的所有功能的浏览器(IE)时,这种方法才可行。

如果您不能做这样的事情,我想您需要的是完整的C#js解析器,还是我不能正确理解您的问题?

在后一种情况下,您可以使用Javascript .NET

如果您是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");
                }
            });

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM