2010-04-26 17 views
7

tengo el siguiente código que quiero volver a una variable "t" en javascript:variable de acceso de código subyacente a través de JavaScript

Código atrás:

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

variables de llamada en javascript:

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

Entonces, ¿cómo puedo hacer que la "t" variable obtenga el "resultado" de la función GetSomeText del código subyacente?

Gracias.

+2

Por cierto, eso es _Javascript_, no jQuery – SLaks

Respuesta

12

Pruebe esto, suponiendo que se trata de un método público en la página. Esto llamará al método GetSomeText() en la clase de página y luego hará un Response.Write() de los datos en la página a medida que se está procesando. El resultado debería terminar entre las comillas simples en tu javascript.

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

Gracias al. Antiguo Testamento. Este hizo el truco. – Narazana

+0

Este es un agujero de seguridad. – SLaks

+2

@SLaks - Diría que depende de lo que devuelva el método. Si el texto es generado por el usuario, ciertamente debe ser escapado correctamente. Si el programa está generando texto bajo el control del programador, probablemente no lo esté. Ciertamente, se requiere codificar cualquier dato generado por el usuario. – tvanfosson

2

tiene que escribir la cadena a una variable de Javascript en el código del lado del servidor, así: (En un bloque <script> en la página ASPX)

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

Tenga en cuenta que necesidad correctamente escapar de ella, así: (O utilizando el 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(); 
} 
+0

Bueno. Pero es un poco largo. – Narazana

+0

Funcionó para mí, estaba tratando de pasar una ruta de directorio. Esta es la única forma de hacerlo. Método de AppendCharAsUnicode encontrado aquí: http://www.dotnetframework.org/default.aspx/DotNET/DotNET/[email protected]/untmp/Orcas/RTM/ndp/fx/src/xsp/System/Web/Extensions/ Script/Serialización/JavaScriptString @ cs/1/JavaScriptString @ cs – Amicable

Cuestiones relacionadas