在我职业生涯的大部分时间里,我一直生活在桌面世界中,所以请原谅我提出这样一个基本问题,但我不确定从哪里开始寻找。
我希望将一些原始数据与我的HTML一起返回,并在HTML准备好后立即使用jQuery解析和显示数据。我大致知道我的js代码应该是什么样子,但我不确定如何在HTML中嵌入原始数据。
我可以使用$ .getJSON(),但如果我可以在HTML中使用数据,那会更好。
我认为json或XML都可以工作,但是当它们嵌入到HTML中时,什么是逃避/嵌入/解析它们的正确方法?
提前致谢。
答案 0 :(得分:7)
您可以将JSON数据放在隐藏的div中,然后从jQuery解码和使用。
例如,我们将采取:
{"foo":"apple","bar":"orange"}
逃脱并放入div:
<div id="data">%7B%22foo%22%3A%22apple%22%2C%22bar%22%3A%22orange%22%7D</div>
然后从jQuery,我们可以使用数据:
var data = jQuery.parseJSON(unescape($("#data").html()));
所以致电alert(data.foo)
会给我们apple
。
答案 1 :(得分:5)
您希望何时何地获得此数据?
如果您想在视图中使用它,只需将数据传递给视图
即可动作/控制器:
public ActionResult MyAction()
{
ViewData["MyData"] = "this is a sample data of type string";
return View();
}
然后,在你看来的某个地方:
<script>
var data = '<%= ViewData["MyData"] %>';
$(document).ready(){
alert(data);
}
</script>
<h1><%: ViewData["MyData"] %></h1>
当然,如果您正在使用List<string>
或`string []',则需要将其格式化为适当的JavaScript以便jQuery理解它。
<script>
var dataArray = [
<% foreach(string s in (string[])ViewData["MyDataArray"]){ %>
<%= s %>,
<% } %>
];
</script>
如果您在操作中生成了正确的JavaScript而不是视图以避免在视图中出现丑陋的标记,那将会更有吸引力:
public ActionResult MyAction()
{
string[] myArray = new string[]{ "hello", "wolrd" };
ViewData["MyData"] = myArray;
ViewData["JavaScriptArray"] = "[" + myArray.Aggregate((current,next) => string.Format("'{0}','{1}',", current, next).TrimEnd(new char[] { ','})) + "]";
// or you can use your favorite JavaScript serialize
return View();
}
现在,您可以在视图中执行以下操作:
<script>
var dataArray = <%= ViewData["MyJavaScriptArray"] %>;
alert(dataArray[0]); // alerts 'hello'
</script>
答案 2 :(得分:1)
就像你说的那样,最好通过Ajax使用$ .post或$ .get或$(element).load()等来获取它...
但是如果你必须将它保存在页面中,通常会保存在隐藏字段中。 Asp.net使用二进制序列化和Base64将内容保存在隐藏字段中,但您可以将其保存为Json字符串,然后在JS中使用它。