Forum Moderators: open
Error: Object Required
Code: 0
The HTML is:
***********
***********
<HTML>
<HEAD>
<title>Ajax</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<script type="text/javascript" src="quickstart.js"></script>
</HEAD>
<body>
<form id="Form1" method="post" runat="server">
<P>
<TABLE id="Table1" cellSpacing="1" cellPadding="1" width="75%" border="1">
<TR>
<TD>
<P>
<INPUT type="text" id="TextBox1" onblur='process()'>
</P>
</TD>
</TR>
<TR>
<TD><div id="showresults" />
</TD>
</TR>
<TR>
<TD>
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button>
</TD>
</TR>
</TABLE>
</P>
</form>
</body>
</HTML>
***********
***********
The .js file is:
// stores the reference to the XMLHttpRequest object
var xmlHttp = createXmlHttpRequestObject();
// retrieves the XMLHttpRequest object
function createXmlHttpRequestObject()
{
// will store the reference to the XMLHttpRequest object
var xmlHttp;
// if running Internet Explorer
if(window.ActiveXObject)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xmlHttp = false;
}
}
// if running Mozilla or other browsers
else
{
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = false;
}
}
// return the created object or display an error message
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
// make asynchronous HTTP request using the XMLHttpRequest object
function process()
{
// proceed only if the xmlHttp object isn't busy
if (xmlHttp.readyState == 4 ¦¦ xmlHttp.readyState == 0)
{
// retrieve the name typed by the user on the form
varWBS = encodeURIComponent(document.getElementById("TextBox1").value);
// execute the quickstart.php page from the server
xmlHttp.open("GET", "quickstart.aspx?WBS=" + varWBS, true);
// define the method to handle server responses
xmlHttp.onreadystatechange = handleServerResponse;
// make the server request
xmlHttp.send(null);
}
else
// if the connection is busy, try again after one second
setTimeout('process()', 1000);
}
// executed automatically when a message is received from the server
function handleServerResponse()
{
// move forward only if the transaction has completed
if (xmlHttp.readyState == 4)
{
// status of 200 indicates the transaction completed successfully
if (xmlHttp.status == 200)
{
// extract the XML retrieved from the server
xmlResponse = xmlHttp.responseXML;
// obtain the document element (the root element) of the XML structure
xmlDocumentElement = xmlResponse.documentElement;
// get the text message, which is in the first child of
// the the document element
helloMessage = xmlDocumentElement.firstChild.data;
//--This is line 78 error-- update the client display using the data received from the server
document.getElementById("showresults").innerHTML = helloMessage ;
// restart sequence
setTimeout('process()', 1000);
}
// a HTTP status different than 200 signals an error
else
{
alert("There was a problem accessing the server: " + xmlHttp.statusText);
}
}
}
*****************************
*****************************
The requested page, quickstart.aspx, code behind is:
Try
sCon1.Open()
Dim strRQ As String = Server.HtmlEncode(Request.QueryString("WBS")).ToString()
Dim strSQL As String = "Select count(*) from Table where [Number] = '" & strRQ & "'"
Dim cmd As New SqlCommand(strSQL, sCon1)
Dim intCnt As Integer = cmd.ExecuteScalar()
sCon1.Close()
Response.Write(intCnt)
Catch ex As Exception
Response.Write(ex)
Finally
sCon1.Close()
End Try
// executed automatically when a message is received from the server
function handleServerResponse()
{
// move forward only if the transaction has completed
if (xmlHttp.readyState == 4 ¦¦ xmlHttp.status == 200)
{//----This is the line where the error is now getting thrown
var response = xmlHttp.responseText;
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="AjaxTesting.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta name="GENERATOR" content="Microsoft Visual Studio .NET 7.1">
<meta name="CODE_LANGUAGE" content="Visual Basic .NET 7.1">
<meta name="vs_defaultClientScript" content="JavaScript">
<meta name="vs_targetSchema" content="http://schemas.microsoft.com/intellisense/ie5">
<!-- Start script -->
<script>
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
var xmlHttp;
if(window.ActiveXObject)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xmlHttp = false;
}
}
else
{
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = false;
}
}
if (!xmlHttp)
alert("Error creating the XMLHttpRequest object.");
else
return xmlHttp;
}
function process()
{
varWBS = encodeURIComponent(document.getElementById("TextBox1").value);
xmlHttp.open("GET", "test.aspx?WBS=" + varWBS);
xmlHttp.onreadystatechange = handleServerResponse;
xmlHttp.send(null);
}
function handleServerResponse()
{
if (xmlHttp.readyState==4 ¦¦ xmlHttp.readyState==200)
{
document.getElementById("show").innerHTML = xmlHttp.responseText;
}
}
</script>
<!-- End script -->
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="get" runat="server">
<TABLE id="Table1" cellSpacing="1"
cellPadding="1" width="75%" border="1">
<TR>
<TD>
<asp:TextBox id="TextBox1" runat="server" onblur='process()'></asp:TextBox></TD>
</TR>
<TR>
<TD>
</TD>
</TR>
<TR>
<TD>
<asp:Button id="Button1" runat="server" Text="Button"></asp:Button></TD>
</TR>
</TABLE>
<div id="show"></div>
</form>
</body>
</HTML>
**************
**************
The text.aspx page is simply this for the code behind:
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
'Put user code to initialize the page here
If Server.HtmlEncode(Request.QueryString("WBS")).ToString = "1.2.8.5.001" Then
Response.Write("Please enter another WBS!")
Else
Response.Write("You can use this one!")
End If
End Sub
I figured out the code (right after if(xmlHttp.status == 200)). My earlier problem was a null reference to the div tage 'show' only in IE, but it worked in FireFox.
The app works like:
If the number isn't unique via a database SQL count(*), it'll tell you so, but then if you enter another number (which is in fact distinct), then the user gets the message right underneath the previous {div id=show} message...it's not replaced....just appended! I'd like to have it replace the value, rather than stick the new message underneath.
<%@ Page Language="vb" AutoEventWireup="false" Codebehind="WebForm1.aspx.vb" Inherits="AjaxTesting.WebForm1"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">
<HTML>
<HEAD>
<title>WebForm1</title>
<meta content="Microsoft Visual Studio .NET 7.1" name="GENERATOR">
<meta content="Visual Basic .NET 7.1" name="CODE_LANGUAGE">
<meta content="JavaScript" name="vs_defaultClientScript">
<meta content="http://schemas.microsoft.com/intellisense/ie5" name="vs_targetSchema">
<!-- Start script -->
<script language="javascript">
var xmlHttp = createXmlHttpRequestObject();
function createXmlHttpRequestObject()
{
var xmlHttp;
if(window.ActiveXObject)
{
try
{
xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch (e)
{
xmlHttp = false;
}
}
else
{
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = false;
}
}
if (!xmlHttp)
{
alert("Error creating the XMLHttpRequest object.");
}
else
{
return xmlHttp;
}
}
function process()
{
varWBS = encodeURIComponent(document.getElementById("TextBox1").value);
xmlHttp.open("GET", "test.aspx?WBS=" + varWBS);
xmlHttp.onreadystatechange = handleServerResponse;
xmlHttp.send(null);
}
function handleServerResponse()
{
//if (xmlHttp.readyState == 4 && xmlHttp.status == 200)
//{
// document.getElementById("show").innerHTML = xmlHttp.responseText;
//}
//}
//New code
if (xmlHttp.readyState == 4)
{
if(xmlHttp.status == 200)
{
var parentElement = document.getElementById('show');
var wrappingDiv = document.createElement('div');
wrappingDiv.innerHTML = xmlHttp.responseText;
parentElement.appendChild(wrappingDiv);
//document.getElementById("show").innerHTML = xmlHttp.responseText;
//document.all[show].innerHTML = xmlHttp.responseText;
}
else
{
alert("hmmmm");
}
}
}
//End code
</script>
<!-- End script -->
</HEAD>
<body MS_POSITIONING="GridLayout">
<form id="Form1" method="post" runat="server">
<table id="maintbl" border="1">
<tr>
<td><asp:textbox id="TextBox1" onblur="process()" style="Z-INDEX: 101" runat="server"></asp:textbox></td>
<td><asp:textbox id="TextBox2" style="Z-INDEX: 101" runat="server"></asp:textbox></td>
</tr>
<tr>
<td>
<div id="show"></div>
</td>
</tr>
</table>
</form>
</body>
</HTML>