通过html中的JSON将paranter从asp.net传递到java脚本
我想在HTML响应中传递一些JSON对象,并在客户机中评估它。我在服务器中使用了fallowing代码:通过html中的JSON将paranter从asp.net传递到java脚本,json,asp.net-mvc-2,Json,Asp.net Mvc 2,我想在HTML响应中传递一些JSON对象,并在客户机中评估它。我在服务器中使用了fallowing代码: TagBuilder tag = new TagBuilder("script"); tag.Attributes.Add("Id", id); tag.Attributes.Add("type", "text/html"); tag.SetInnerText(new JavaScriptSerializer().Se
TagBuilder tag = new TagBuilder("script");
tag.Attributes.Add("Id", id);
tag.Attributes.Add("type", "text/html");
tag.SetInnerText(new JavaScriptSerializer().Serialize(content));
return MvcHtmlString.Create(tag.ToString());
我尝试在客户机中评估它:
var p = eval("(" + pEl.html() + ")");
但由于编码的原因,它不起作用,所以我必须通过以下方式对其进行解码:
var p = eval("(" + pEl.html().replace(/"/g,"'") + ")");
但它似乎不太令人愉快,我试图用它来代替服务器端,但它保持不变。
有解决问题的办法吗?
有更好的方法可以在HTML响应中传递JSON。
谢谢试试这个:
TagBuilder tag = new TagBuilder("script");
tag.Attributes.Add("type", "text/javascript");
string json = new JavaScriptSerializer().Serialize(content);
tag.InnerHtml = "var p = " + json + ";";
return MvcHtmlString.Create(tag.ToString());
这声明了一个名为
p
的全局javascript变量,其中包含可以在脚本中随处使用的json对象,您不必担心替换引号或调用eval
。您可以使用id
参数命名此变量,例如,如果您不想将其命名为p
不,它不工作,它的呈现为“as”,因此IE不接受它作为JavaScript。正确,对不起,请查看我的更新,使用InnerHtml
asSetInnerText
。