【问题标题】:Access variable from code behind via javascript通过javascript从后面的代码访问变量
【发布时间】:2011-02-12 11:03:12
【问题描述】:

我有以下代码要返回到 javascript 中的变量“t”:

后面的代码:

Public Shared Function GetSomeText() As String
  Dim result = "This is from code behind"
  Return result
End Function

javascript 中的调用者变量:

//This is not working like that, I think
    var t = GetSomeText();

那么,如何让变量“t”从代码隐藏的函数 GetSomeText 中获取“结果”?

谢谢。

【问题讨论】:

  • 顺便说一下,那是 Javascript,不是 jQuery。

标签: asp.net javascript vb.net json


【解决方案1】:

试试这个——假设这是页面上的公共方法。这将在页面类上调用 GetSomeText() 方法,然后在呈现页面时对页面执行 Response.Write() 数据。结果应该在您的 javascript 中的单引号之间结束。

 var t = '<%= GetSomeText() %>';

【讨论】:

  • @SLaks -- 我会说这取决于方法返回的内容。如果文本是用户生成的,那么它肯定需要正确转义。如果程序在程序员的控制下生成文本,那么它可能不是。当然需要对任何用户生成的数据进行编码。
【解决方案2】:

您需要将字符串写入服务器端代码中的 Javascript 变量,如下所示:(在 ASPX 页面中的 &lt;script&gt; 块中)

var t = "<%= GetSomeText() %>";

请注意,您必须正确转义它,如下所示:(或使用AntiXSS Toolkit

public static void QuoteString(this string value, StringBuilder b) {
    if (String.IsNullOrEmpty(value))
        return "";

    var b = new StringBuilder();
    int startIndex = 0;
    int count = 0;
    for (int i = 0; i < value.Length; i++) {
        char c = value[i];

        // Append the unhandled characters (that do not require special treament)
        // to the string builder when special characters are detected.
        if (c == '\r' || c == '\t' || c == '\"' || c == '\'' || c == '<' || c == '>' ||
            c == '\\' || c == '\n' || c == '\b' || c == '\f' || c < ' ') {
            if (b == null) {
                b = new StringBuilder(value.Length + 5);
            }

            if (count > 0) {
                b.Append(value, startIndex, count);
            }

            startIndex = i + 1;
            count = 0;
        }

        switch (c) {
            case '\r':
                b.Append("\\r");
                break;
            case '\t':
                b.Append("\\t");
                break;
            case '\"':
                b.Append("\\\"");
                break;
            case '\\':
                b.Append("\\\\");
                break;
            case '\n':
                b.Append("\\n");
                break;
            case '\b':
                b.Append("\\b");
                break;
            case '\f':
                b.Append("\\f");
                break;
            case '\'':
            case '>':
            case '<':
                AppendCharAsUnicode(b, c);
                break;
            default:
                if (c < ' ') {
                    AppendCharAsUnicode(b, c);
                } else {
                    count++;
                }
                break;
        }
    }

    if (b == null) {
        b.Append(value);
    }

    if (count > 0) {
        b.Append(value, startIndex, count);
    }

    return b.ToString();
}

【讨论】:

猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-08-12
  • 2012-03-18
  • 1970-01-01
  • 2017-01-10
  • 2018-05-11
  • 2012-07-30
相关资源
最近更新 更多