Forum Moderators: open

Message Too Old, No Replies

Newbie to Ajax with Object Required message

         

bubberz

3:38 pm on Jul 6, 2006 (gmt 0)

10+ Year Member



The error (also marked in .js file below) I get is:
Line 78
Char 7

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

bubberz

4:54 pm on Jul 6, 2006 (gmt 0)

10+ Year Member



If I change the page where the user enters data into the text box from a v1.1 ASP.NET page to an .htm page, the functionality works, though I get an "unspecified error" from the .js file @:

// 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;

RonPK

8:11 pm on Jul 6, 2006 (gmt 0)

WebmasterWorld Senior Member 10+ Year Member



Does it help when you replace <div id="showresults" /> with <div id="showresults"></div>?

Injected

11:30 pm on Jul 6, 2006 (gmt 0)

10+ Year Member



I get this same error, but only from my home computer. I can use my work computer, my parents computer, or the library computer, but my home computer gives me this error. Is there some computer setting somewhere, or is it still in my script?

bubberz

2:50 am on Jul 7, 2006 (gmt 0)

10+ Year Member



I'm trying everything here, so another shot at this, and here's the initial ASP.NET v1.1 page with the AJAX script in the Head tag, and I get the "Unknown error" in the handleServerResponse() when it's assigning "show" it's innnerHTML value:

<%@ 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

bubberz

5:37 pm on Jul 13, 2006 (gmt 0)

10+ Year Member



All,

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>