ASP Response Object : Write Method
The Write method writes any specified string to the HTTP output.
There is one mandatory argument:
- Variant - the data to be written as a string.
The
variant data type is the
only data type available in
VBScript. It can, however, hold many different subtypes, including
Boolean,
String, and
Numeric. The
Write method automatically converts the
variant data type to the
String subtype before sending it.
Example:
Hello!<br>
<%
dim helloVar
helloVar = "Hello!<br>"
Response.Write helloVar
Response.Write "Hello!<br>"
%>
The above example sends HTTP output in three different ways: regular
HTML, response writing a variable, and response writing a String. It would result in the output:
Hello!
Hello!
Hello!
Tips & Hints
The <%= %> Shortcut
When you are mixing HTML and ASP code on the same page, there are times when you want to send a variable you've set earlier to the HTTP output. Using Response.Write, you would have to write something similar to the following:
<table>
<tr>
<td>
<%Response.Write myVariable%>
</td>
</tr>
</table>
However,
ASP provides a
shortcut to the
Write method for sending single variables/strings to the output stream. You can use
<%=variable%> in place of
<%Response.Write variable%>. So the example from above becomes:
<table>
<tr>
<td>
<%=myVariable%>
</td>
</tr>
</table>
I find this extremely useful, because it saves time typing and the
end result is more readable. However, you should be aware that neither of the above two examples are the most
efficient way to send
output. You see, in both of the examples above, you switch from HTML to ASP and back to HTML. This forces your
web server to switch to the ASP script engine to process the ASP code and then back to normal to send the HTML, which causes a small
performance hit. The most efficient way to send the above information would be to use only ASP code to write it. For example:
<%
Response.Write "<table>" & vbCrLf1
Response.Write "<tr>" & vbCrLf
Response.Write "<td>" & vbCrLf
Response.Write myVariable
Response.Write "</td>" & vbCrLf
Response.Write "</tr>" & vbCrLf
Response.Write "</table>" & vbCrLf
%>
This is the most
efficient code, but it is not the easiest to read. Herein lies your greatest tradeoff - readability or efficiency? If I'm not writing
mission critical software which
has to run as quickly as possible, I almost always take the small performance hit and use the inline shortcut. I find it makes it an order of
magnitude easier to read and modify the code later on.
The println Function
When using lots of Response.Write's in an ASP page, I quickly get tired of writing "& vbCrLf" after every line of HTML to ensure a hard return in the source code (what you see when you Right-Click "View Source" in most browsers). Instead I write my own println subroutine to do it for me. It's a simple way around a simple problem.
An example:
<%
Sub println(printString)
Response.Write printString & vbCrLf
End Sub
'now use println's in place of response writes when you want
'to include a hard return after the line.
myVariable = 200
println "You have "
println myVariable
println " apples."
%>
This results in the output:
You have 200 apples.
Notice that
vbCrLf does not cause the HTML output to
break lines. For this you still need to use HTML <br> and <p> tags. However, if you viewed the source of the
page created by the above code, you would find that it looked like:
You have
200
apples.
While not particularly useful here, it is very useful when
formatting long tables and lists.
Back to the
ASP Response Object
Back to
ASP Objects
1 Carriage Return, Line Feed. VBScript's newline. You can also use vbNewline.
Resources:
http://www.devguru.com/
http://msdn.microsoft.com/asp/
All code is my own (yes, I actually claim it).