Bob3975
asked on
Response.Redirect & Response.Buffer
The website I've built was created extensively with ASP javascript. Now that I want to upload files, I've picked up a package called "Free ASP Upload" which does exactly what I want...except it's built in VBScript...for me what seems to be an advanced form of VBScript. While I could take a few days and rewrite it into javascript, I'm sure it would take a few more days to debug it and then still not be sure I did it right. I've thought of mixing ASP VBScript and ASP javascript routines on the same page, but that appears to be impossible.
The pages in my website all have a large header containing a chunk of html/asp/javascript. Because of the includes and complexity, rewriting that into VBScript seems out of the question.
So I thought I'd try to build the header as usual with my ASP javascript then redirect to an asp page built with VBScript/freeASPUpload. I added Response.Buffer=true to the first page and then do the redirect after passing through the code to build the headers. The redirect works but I don't get the headers, only the output of the second page.
How can I get this to work? The code looks generally like...
==============
<%@ Language = javascript%>
<!--#include file="security.asp"-->
<!--#include file="noCache.asp"-->
<%
/******** Admin Only ********/
if (Session("Admin")!=1){
Session.Abandon;
Response.redirect("login.a sp");
}
/******** Admin Only ********/
Response.Buffer = true;
%>
<html>
<head>
<title>Upload League Import File</title>
...
<noscript>
...
</noscript>
<%
Response.redirect("freeASP UploadTest er.asp");
%>
The pages in my website all have a large header containing a chunk of html/asp/javascript. Because of the includes and complexity, rewriting that into VBScript seems out of the question.
So I thought I'd try to build the header as usual with my ASP javascript then redirect to an asp page built with VBScript/freeASPUpload. I added Response.Buffer=true to the first page and then do the redirect after passing through the code to build the headers. The redirect works but I don't get the headers, only the output of the second page.
How can I get this to work? The code looks generally like...
==============
<%@ Language = javascript%>
<!--#include file="security.asp"-->
<!--#include file="noCache.asp"-->
<%
/******** Admin Only ********/
if (Session("Admin")!=1){
Session.Abandon;
Response.redirect("login.a
}
/******** Admin Only ********/
Response.Buffer = true;
%>
<html>
<head>
<title>Upload League Import File</title>
...
<noscript>
...
</noscript>
<%
Response.redirect("freeASP
%>
ASKER
When I enclose the VBScript in:
<script language="VBScript" runat="Server">
..VBSCript Code
</script>
I get
Error Type:
Microsoft VBScript compilation (0x800A0400)
Expected statement
<%
It bombs as soon as it sees the asp delimeter <%
<script language="VBScript" runat="Server">
..VBSCript Code
</script>
I get
Error Type:
Microsoft VBScript compilation (0x800A0400)
Expected statement
<%
It bombs as soon as it sees the asp delimeter <%
ASKER CERTIFIED SOLUTION
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
And here's an example of GoofyDawg's answer...
<%@ Language=javascript %>
<%
response.Write(vbfunction( ));
%>
<script language=vbscript runat=server>
function vbfunction()
vbfunction= "this is from vbscript"
end function
</script>
<%@ Language=javascript %>
<%
response.Write(vbfunction(
%>
<script language=vbscript runat=server>
function vbfunction()
vbfunction= "this is from vbscript"
end function
</script>
ASKER
Server.Execute ! Seems to work. Let me make sure by getting rid of a couple of errors I'm getting.
GoofyDawg's solution will fail where indicated below
<%@ Language=javascript %>
<%
response.Write(vbfunction( ));
%>
<script language=vbscript runat=server>
function vbfunction()
vbfunction= "this is from vbscript"
end function
<% <---------------- fails
vb stuff
%>
</script>
GoofyDawg's solution will fail where indicated below
<%@ Language=javascript %>
<%
response.Write(vbfunction(
%>
<script language=vbscript runat=server>
function vbfunction()
vbfunction= "this is from vbscript"
end function
<% <---------------- fails
vb stuff
%>
</script>
ASKER
Server.Execute does exactly what I want. An easy answer to a bunch of points. But as a wise man once said,"You don't know what you don't know until you're told what you don't know."
Don't use <% %>.
ASKER
Unfortunately I believe I have to use <% %>, because of the asp statements in the VBScript such as Response.write.
You're right of course, duh!
No you don't but the order seems to be messed up...
<%@ Language=javascript %>
<%
response.Write("javascript output<br>");
%>
<script language=vbscript runat=server>
response.Write("script engine= " & ScriptEngine & "<br>")
</script>
<%@ Language=javascript %>
<%
response.Write("javascript
%>
<script language=vbscript runat=server>
response.Write("script engine= " & ScriptEngine & "<br>")
</script>
ASKER
Clearly, I stand corrected. Learn something new everyday. Is it the runat=server that implies this is asp and therefore no <% %> is needed?
<script language="VBScript" runat="Server">
..VBSCript Code
</script>
You should be able to mix different kinds of code doing this. I did it the other way around with a VBScript ASP page, and then using some JavaScript in a separate section. Worked fine.
GoofyDawg