Groups | Blog | Home
all groups > dotnet jscript > june 2007 >

dotnet jscript : HELP: ASP JScript & VBScript interoperability


Andrew Wan
6/15/2007 5:42:32 PM
How can VBScript code access JScript code variables in the same ASP page?

<SCRIPT LANGAUGE="VBScript">
Dim a
a = 10
</SCRIPT>
<SCRIPT LANGUAGE="JScript">
Response.Write(a);
</SCRIPT>

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

<SCRIPT LANGUAGE="JScript">
function Section(a, b, c, d) {
this.a = a;
this.memFunction = 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="VBScript">
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 <SCRIPT> tag inside <% %>? Like:

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

where JScript.asp has:

<SCRIPT LANGUAGE="JScript">
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
6/15/2007 6:22:42 PM

[quoted text, click to view]

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.



[quoted text, click to view]

Yeah but it's very JScript and is completely alien to VBScript.

[quoted text, click to view]

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)

[quoted text, click to view]

No do it the other way around:-

Have a JScript.js file

then add this outside <% %> :-

<script src="test.js" runat="server" language="JScript" ></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.

[quoted text, click to view]

Again the runat attribute was missing.

AddThis Social Bookmark Button