【问题标题】:JSON stringify returning null (C# WebBrowser control)JSON stringify 返回 null(C# WebBrowser 控件)
【发布时间】:2017-08-05 02:04:00
【问题描述】:

我试图将我的 JSON 对象的字符串表示形式返回给我的 C# 应用程序,但是每次我使用 JSON.stringify(jsonObj) 时,它都会将 null 返回给我的应用程序。我正在使用WebBrowser 控件。

页面设置如下:

var myObj = { "foo": [] }
// Push data into it

function getMyObj() {
    return JSON.stringify(myObj);
}

在我的 C# 代码中,我有这个:

 string bar = myWebBrowser.MainBrowser.Document.InvokeScript("getMyObj").ToString();

但是,调用该方法后,它返回null。我什至尝试将alert 放在我在alert 中调用getMyObj() 函数的JavaScript 页面中,但警报从未出现。

这是WebBrowser 控制问题吗?应该支持JSON,浏览器使用的是IE11。

【问题讨论】:

  • 控制台有错误吗?如果您在字符串化之前console.log(myObj) 怎么办?
  • 如果我在 IE、Firefox 或 Chrome 等网络浏览器中测试它,它会打印出对象内的数据。在应用程序中,console.log(myObj) 没有出现在控制台中,所以我没有得到任何输出。
  • 是的,但是数据是什么样的?它有效吗?它是“可字符串化的”吗?
  • 我看到一个带有数据数组的对象。它看起来有效。当我在 IE、Firefox 或 Chrome 中对其进行字符串化时:{"data": [{"field1": "value"},{"field1": "value"}]}。但在 C# 应用程序中什么都没有。

标签: javascript c# json


【解决方案1】:

我使用元标记来解决这个问题。显然 WebBrowser Control 默认为 IE7。您可以更改注册表设置以更正此问题,但我不想修改用户注册表设置。

这个问题帮助我找到了解决方案:Use latest version of Internet Explorer in the webbrowser control

<html>
<head>
    <meta http-equiv='X-UA-Compatible' content='IE=edge' >
...
</head>
<body>
...
<script>
    var myObj = { "foo": [] }
    // Push data into it

    function getMyObj() {
        return JSON.stringify(myObj);
    }
    </script>
</body>
</html>

希望这会有所帮助!

【讨论】:

    猜你喜欢
    • 2013-02-22
    • 2020-04-14
    • 2020-02-11
    • 2018-09-11
    • 2015-07-31
    • 2012-10-26
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    相关资源
    最近更新 更多