如何在页面加载时将代码后面的字符串发送到javascript中的变量?

时间:2011-07-06 13:01:33

标签: javascript asp.net

我想将使用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新秀...... :)

3 个答案:

答案 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)

还有其他一些方法可以将内容放在页面中,例如隐藏字段和数​​据岛,但它们在页面源中仍然可见。

您可能会对数据进行模糊处理以使其难以阅读,但在解码后仍然可以轻松暂停脚本使用数据,并且数据仍然可见。

因此,如果您希望在页面加载时立即获得数据,则需要将其包含在页面中,并且用户可以查看它。