HELP: ASP JScript & VBScript interoperability

Collapse
This topic is closed.
X
X
 
  • Time
  • Show
Clear All
new posts
  • Andrew Wan

    HELP: ASP JScript & VBScript interoperability

    How can VBScript code access JScript code variables in the same ASP page?

    <SCRIPT LANGAUGE="VBScr ipt">
    Dim a
    a = 10
    </SCRIPT>
    <SCRIPT LANGUAGE="JScri pt">
    Response.Write( a);
    </SCRIPT>

    Also, is this valid JScript code because ASP hasn't complained.

    <SCRIPT LANGUAGE="JScri pt">
    function Section(a, b, c, d) {
    this.a = a;
    this.memFunctio n = function() {
    this.a = this.a + 1;
    }
    }
    </SCRIPT>

    Basically it's like JScript's way of declaring classes.

    How can VBScript code create a Section object?

    <SCRIPT LANGUAGE="VBScr ipt">
    Dim obj
    obj = new Section 'Error, says cannot find Section
    obj = new Section() 'Error again
    obj = new Section(1, 2, 3, 4) 'Error again
    </SCRIPT>


    Also, is it possible to nest <SCRIPTtag inside <% %>? Like:

    <%
    'Some VBScript code
    Class AClass
    Private a
    Function b()
    End Function
    %>
    <!-- #INCLUDE VIRTUAL="JScrip t.asp" -->
    <%
    End Class
    %>

    where JScript.asp has:

    <SCRIPT LANGUAGE="JScri pt">
    function Section() {
    function Section2() {
    }
    }
    </SCRIPT>

    ASP didn't complain. But couldn't test whether the JScript functions Section
    were member functions of the VBScript AClass.


  • Anthony Jones

    #2
    Re: ASP JScript &amp; VBScript interoperabilit y


    "Andrew Wan" <andrew_wan1980 @hotmail.comwro te in message
    news:OrvCZw2rHH A.3884@TK2MSFTN GP04.phx.gbl...
    How can VBScript code access JScript code variables in the same ASP page?
    >
    <SCRIPT LANGAUGE="VBScr ipt">
    Dim a
    a = 10
    </SCRIPT>
    <SCRIPT LANGUAGE="JScri pt">
    Response.Write( a);
    </SCRIPT>
    >
    Also, is this valid JScript code because ASP hasn't complained.
    It won't because without a runat="server" attribute on the script element
    the above is simply treated as content and sent to the client. The client
    should've complained that Response is undefined.

    To answer your question variables and functions declared at global scope are
    accessible across the script boundaries.


    >
    <SCRIPT LANGUAGE="JScri pt">
    function Section(a, b, c, d) {
    this.a = a;
    this.memFunctio n = function() {
    this.a = this.a + 1;
    }
    }
    </SCRIPT>
    >
    Basically it's like JScript's way of declaring classes.
    Yeah but it's very JScript and is completely alien to VBScript.
    >
    How can VBScript code create a Section object?
    >
    <SCRIPT LANGUAGE="VBScr ipt">
    Dim obj
    obj = new Section 'Error, says cannot find Section
    obj = new Section() 'Error again
    obj = new Section(1, 2, 3, 4) 'Error again
    </SCRIPT>
    You need to create a factory function in the JScript:-

    function newSection(a, b, c, d)
    {
    return new Section(a, b, c, d)
    }

    Now VBScript can use:-

    Set obj = newSection(1,2, 3,4)
    >
    >
    Also, is it possible to nest <SCRIPTtag inside <% %>? Like:
    >
    <%
    'Some VBScript code
    Class AClass
    Private a
    Function b()
    End Function
    %>
    <!-- #INCLUDE VIRTUAL="JScrip t.asp" -->
    <%
    End Class
    %>
    >
    where JScript.asp has:
    >
    <SCRIPT LANGUAGE="JScri pt">
    function Section() {
    function Section2() {
    }
    }
    </SCRIPT>
    No do it the other way around:-

    Have a JScript.js file

    then add this outside <% %:-

    <script src="test.js" runat="server" language="JScri pt" ></script>

    Note it only makes sense to use this a function library, in-line code isn't
    much use apart from code that may help create objects.
    >
    ASP didn't complain. But couldn't test whether the JScript functions
    Section
    were member functions of the VBScript AClass.
    >
    >
    Again the runat attribute was missing.


    Comment

    Working...