2010-04-26 17 views
7

के माध्यम से मेरे पास है निम्नलिखित कोड है कि मैं जावास्क्रिप्ट में एक चर "टी" पर लौटने के लिए करना चाहते हैं:पहुँच चर के पीछे जावास्क्रिप्ट

कोड के पीछे:

Public Shared Function GetSomeText() As String 
    Dim result = "This is from code behind" 
    Return result 
End Function 
जावास्क्रिप्ट में

कोलर चर:

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

तो, मैं कोड को पीछे से "get" को फ़ंक्शन GetSomeText से "परिणाम" कैसे प्राप्त कर सकता हूं?

धन्यवाद।

+2

का उपयोग कर वैसे, कि _Javascript_, नहीं jQuery – SLaks

उत्तर

12

इसे आज़माएं - यह मानते हुए कि यह पृष्ठ पर एक सार्वजनिक विधि है। यह पेज क्लास पर GetSomeText() विधि को कॉल करेगा और फिर पृष्ठ पर डेटा के एक Response.Write() को प्रस्तुत किया जा रहा है। परिणाम आपके जावास्क्रिप्ट में एकल उद्धरण के बीच समाप्त होना चाहिए।

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

धन्यवाद अल है OT। यह एक चाल है। – Narazana

+0

यह एक सुरक्षा छेद है। – SLaks

+2

@SLaks - मैं कहूंगा कि यह इस बात पर निर्भर करता है कि विधि क्या लौटाती है। यदि पाठ उपयोगकर्ता द्वारा जेनरेट किया गया है, तो निश्चित रूप से इसे ठीक से बचने की आवश्यकता है। यदि कार्यक्रम प्रोग्रामर के नियंत्रण में पाठ उत्पन्न कर रहा है तो शायद यह नहीं है। निश्चित रूप से किसी उपयोगकर्ता द्वारा जेनरेट किए गए डेटा को एन्कोड करना आवश्यक है। – tvanfosson

2

आप सर्वर-साइड कोड में एक Javascript चर करने के लिए स्ट्रिंग लिखने के लिए इस तरह की जरूरत है: (ASPX पेज में एक <script> ब्लॉक में)

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(); 
} 
+0

अच्छा है। लेकिन यह थोड़ा लंबा है। – Narazana

+0

मेरे लिए काम किया, एक निर्देशिका पथ पारित करने की कोशिश कर रहा था। ऐसा करने का यही एकमात्र तरीका है। AppendCharAsUnicode विधि यहां मिली: http://www.dotnetframework.org/default.aspx/DotNET/DotNET/[email protected]/untmp/Orcas/RTM/ndp/fx/src/xsp/System/Web/Extensions/ स्क्रिप्ट/क्रमबद्धता/JavaScriptString @ सीएस/1/JavaScriptString @ सीएस – Amicable

संबंधित मुद्दे