Solved

How to populate a drop down menu from a database without refreshing the page

Posted on 2008-10-22
4
347 Views
Last Modified: 2010-04-21
I have form on my page and based on what the user chooses from the first drop down menu, I want the next drop down menu to populate with values from a database.  I've attached a copy of the code and the asp function I'm trying to call.

When I select my survey project from the 1st drop down, I get the alert -> There was a problem while using XMLHTTP: Internal Server Error.

The getsurvey.asp code appears to be working and I've included the output from this function when I test the program in my browser.

Can someone please help me figure out what I'm doing wrong?
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1">
<title>My title</title>
<SCRIPT TYPE="text/javascript">
<!--
window.focus();
 
function getSurveys(dbPath)
{
   var strURL="getsurvey.asp?dbpath=" + dbPath;
   var xmlhttp = new ActiveXObject("Msxml2.XMLHTTP");
   if (xmlhttp)
   {
      xmlhttp.onreadystatechange = function()
      {
         if (xmlhttp.readyState == 4)
      	{
	   // only if "OK"
	   if (xmlhttp.status == 200)
         	   {
	      document.getElementById('surveydiv').innerHTML=xmlhttp.responseText;
	   } else {
   	      alert("There was a problem while using XMLHTTP:\n" + xmlhttp.statusText);
	   }
       	}
      }
      xmlhttp.open("GET", strURL, true);
      xmlhttp.send(null);
   } else {
      alert("There was a problem creating the xmlhttp object");
   }
}
 
//-->
</SCRIPT>
</head>
 
<body>
<table width="100%" border="0" cellpadding="0" cellspacing="5">
  <tr>
    <td align="left" valign="top">Project Survey:</td>
    <td align="left" valign="top">
      <select name="Projects" onChange="getSurveys(this.value)">
        <option>Select Project Survey</option>
        <option value="mypath\mydbname.mdb">Survey Project 1</option>
      </select>
    </td>
  </tr>
  <tr>
    <td align="left" valign="top">Program Survey:</td>
    <td align="left" valign="top">
      <p id="surveydiv">
        <select name="survey"><option>Select Project Survey First</option></select>
      </p>
    </td>
  </tr>
</table>
</body>
</html>
 
 
******************************************************************
getsurveys.asp
******************************************************************
<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252" ENABLESESSIONSTATE = True %>
<% Option Explicit %>
<!--#include file="functions.asp"-->
<%
Dim MyConn, ConnStr, rs, dbPath, dbName
 
dbName = "\" & Right(Request.QueryString("dbpath"), Len(Request.QueryString("dbpath")) - InStrRev(Request.QueryString("dbpath"), "\"))
dbPath = Left(Request.QueryString("dbpath"), Len(Request.QueryString("dbpath")) - Len(dbName))
Call OpenDatabase(MyConn, adModeShareDenyNone, dbPath, dbName)
 
ConnStr = "SELECT presenterid, program FROM Presenter;"
set rs = MyConn.Execute(ConnStr)
%>
<select name="surveys">
	<option>Select Program Survey</option>
	<% do while rs.EOF = false %>
	<option value=<%=rs("presenterid")%>><%=rs("program")%></option>
	<%		rs.MoveNext
		loop %>
</select>
<% Call Database_Close(MyConn) %>
 
*********************************************************************
getsurveys.asp output
********************************************************************
 
<select name="surveys">
	<option>Select Program Survey</option>
	
	<option value=37>Program 1</option> -->
	
	<option value=33>Program 2</option>
	
	<option value=34>Program 3</option>
	
	<option value=35>Program 4</option>	
	<option value=36>Program 5</option>	
</select>

Open in new window

0
Comment
Question by:dyarosh
[X]
Welcome to Experts Exchange

Add your voice to the tech community where 5M+ people just like you are talking about what matters.

  • Help others & share knowledge
  • Earn cash & points
  • Learn & ask questions
  • 2
4 Comments
 
LVL 7

Accepted Solution

by:
ASPSQLServerCOM earned 500 total points
ID: 22780621
first try this example
The reference site W3Schools has a good section on AJAX http://www.w3schools.com/ajax/default.asp.

There is also a good explanation on what AJAX is at http://en.wikipedia.org/wiki/Ajax_%28programming%29
http://www.skeymedia.com/programming/classic-asp-and-ajax-tutorial/
0
 
LVL 19

Expert Comment

by:Albert Van Halen
ID: 22780683
Perhaps a typo ?? Your page is called getsurveys.asp, yet you make a request to getsurvey.asp.
0
 

Author Closing Comment

by:dyarosh
ID: 31508848
Thanks for the help.  Your solution worked.  Also, the typo was in my posting where I labeled the program name.
0
 
LVL 19

Expert Comment

by:Albert Van Halen
ID: 22787034
Hi dyarosh, like to hear what your solution was for your problem.
0

Featured Post

Instantly Create Instructional Tutorials

Contextual Guidance at the moment of need helps your employees adopt to new software or processes instantly. Boost knowledge retention and employee engagement step-by-step with one easy solution.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

Article by: DanRollins
This article describes a JavaScript program that creates a maze made of hexagonal cells.  In Part 2 (http://www.experts-exchange.com/Programming/Languages/Scripting/JavaScript/A_7850-Hex-Maze-Part-2.html), we'll extend the program by adding a depth-…
This article demonstrates how to create a simple responsive confirmation dialog with Ok and Cancel buttons using HTML, CSS, jQuery and Promises
The viewer will learn the basics of jQuery, including how to invoke it on a web page. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery.: (CODE)
The viewer will learn the basics of jQuery including how to code hide show and toggles. Reference your jQuery libraries: (CODE) Include your new external js/jQuery file: (CODE) Write your first lines of code to setup your site for jQuery…

717 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question