【发布时间】:2012-09-11 04:08:48
【问题描述】:
当我尝试从 javascript 访问 json 中的元素时,我遇到了这个奇怪的问题。我从这样的 url 中检索一个 json 字符串,
// Create Request
HttpWebRequest req = (HttpWebRequest)WebRequest.Create(@"www.someurl.com");
// Create Client
WebClient client = new WebClient();
// Assign Credentials
client.Credentials = new NetworkCredential("username", "pass");
// Grab Data
sjson = client.DownloadString(@"www.someurl.com");
System.Web.Script.Serialization.JavaScriptSerializer oSerializer = new System.Web.Script.Serialization.JavaScriptSerializer();
oSerializer.MaxJsonLength = Int32.MaxValue;
sjson = oSerializer.Serialize(sjson);
但是当我在 html 代码中从 javascript 访问这个 sjson 变量时,它不会返回任何内容,但是如果我对其进行硬编码,它会返回值,请帮助解决这个问题。我尝试了很多东西,但没有奏效。我还尝试只传递检索到的 json 字符串而不进行序列化,当我这样做时,javascript 停止工作。 :(以下是javascript代码,
<script type="text/javascript">
var jsons = JSON.parse('<%=sjson%>');
function initialize() {
alert("hahahahaaa");
document.writeln(jsons.Body[0].RowId.SensorIdValue);
//document.writeln(myobject.Body[0].RowId.SensorIdValue);
}
</script>
问题是
document.writeln(myobject.Body[0].RowId.SensorIdValue);
如果我使用 myobject 变量,则返回一个值,但是
document.writeln(jsons.Body[0].RowId.SensorIdValue);
当我将它与解析值一起使用时,不返回任何内容。 :(
以下是我通过 c# 运行序列化程序后得到的 json 输出(response.write)示例,
请帮我解决这个问题..我似乎无法在这里找到问题。
编辑:
如果有帮助,下面是我直接从服务器获取的 json 字符串,无需进行任何序列化,
由于所有者的要求,该问题的一些内容已被删除
【问题讨论】:
-
使用
console.log(jsons);验证json对象的值 -
我不知道 ASP 是如何发送编码后的 JSON 的,但是你尝试去掉斜线?
-
你序列化了两次!从webservice下载的时候已经序列化了。
-
哦...我明白了,谢谢您的回复..请检查一下 :)
-
哦,好吧,我试着去掉斜线:)
标签: c# javascript asp.net json webforms