2017-03-14 72 views
0

我想將我的JSON對象的字符串表示形式返回給我的C#應用​​程序,但每次使用JSON.stringify(jsonObj)時,它都會將null返回給我的應用程序。我正在使用WebBrowser控件。JSON stringify返回null(C#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裏面調用getMyObj()函數的JavaScript頁面中放入一個alert,但是這個警告永遠不會出現。

是否是WebBrowser控制問題? JSON應該被支持,瀏覽器正在使用IE11。

+0

控制檯中的任何錯誤?如果在console.log(myObj)'串處理之前該怎麼辦? –

+0

如果我使用IE,Firefox或Chrome等瀏覽器對其進行測試,則會打印出對象內的數據。在應用程序中,'console.log(myObj)'沒有出現在控制檯中,所以我沒有輸出。 – cress

+0

是的,但數據是什麼樣子?它有效嗎?它是「stringifyable」? –

回答

0

我用meta標籤來解決這個問題。顯然WebBrowser控件默認爲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> 

希望這有助於!