我想将使用StringBuilder
构建的字符串发送到HTML页面,然后我想在我的JavaScript代码中使用它。
现在我正在做的事情:
在客户端:
<div id="data">
<asp:Literal ID="Literal1" runat="server"></asp:Literal>
</div>
在我的JS块中:
var data = $("#data").html();
在背后的代码中:
Literal1.Text = strXml.ToString();
问题是,通过data
div的来源可以看到这些数据,我不想让它。
我一旦页面加载就想要这个字符串,所以我想在页面加载到服务器之后进行一次AJAX调用就不在了。
任何更顺畅的方式?
这是一个.NET新秀...... :)
答案 0 :(得分:3)
您可以将字符串保存在HiddenField
中,然后使用类似这样的javascript读取其值
<asp:HiddenField runat="server" ID="MyHidden">
中的代码
MyHidden.Value = strXml.ToString();
的javascript
var data = $('#<%=MyHidden.ClientID%>').val();
或者您可以将strXml
定义为protected
变量,并在.aspx
内使用
public class _MyPage:Page
{
Protected String strXml;
private void Page_Load(Object sender,EventArgs e)
{
StringBuilder mystrBuilder = new StringBuilder();
//append some text to mystrBuilder
strXml = mystrBuilder.ToString();
}
}
javascript代码会喜欢这个
var data = '<%=strXml%>';
答案 1 :(得分:2)
您的方法对我来说很好,另一种方法是使用隐藏的input
:
<input type="hidden" runat="server" id="data" />
在代码背后:
this.data.Value = strXml;
在JavaScript中:
var data = $("#data").val();
与div
类似,但您可以在页面的来源中看到提交的值,但是如果我正确理解您的要求,则不可避免的要求是能够在JavaScript中访问这些数据 - 您可以最好地对这些数据进行模糊处理,但是如果有足够多的人确定,那么无论您选择何种方法,都能够检查并查看此数据。
如果数据不敏感,请继续将其放在表单上的隐藏字段中,不要担心。如果数据 敏感且用户不想看到它,那么您应该重构您的页面,以便在服务器上完成处理,并且只有可见的部分才会出现出现在浏览器中。
答案 2 :(得分:1)
还有其他一些方法可以将内容放在页面中,例如隐藏字段和数据岛,但它们在页面源中仍然可见。
您可能会对数据进行模糊处理以使其难以阅读,但在解码后仍然可以轻松暂停脚本使用数据,并且数据仍然可见。
因此,如果您希望在页面加载时立即获得数据,则需要将其包含在页面中,并且用户可以查看它。