JSP & Ajax --> Keine Werte bei Autocomplete

drummy

Grünschnabel
Hallo zusammen!

Ich arbeite mit JSP und will mit Ajax die Suggest-Funktion in ein Formular einbauen! Beim kompilieren erscheinen keine Fehler, wenn man einen Buchstaben ins Feld eingiebt klappt die Auswahlliste aus, jedoch ohne Inhalt.

Was ist hier falsch? Suche schon mehr als einen Tag...
Besten Dank für eure Hilfe

Hier die Files: (schiffAuswahl ist das ResultSet aus der DB Abfrage, der Inhalt ist korrekt)



suggest.html:

Code:
<html>
<link rel="stylesheet" href="stil.css" type="text/css" />
<script language="JavaScript" src="suggest.js"></script>

</body>
<br />
<form name="f1">
<span id="name">
Geben sie den Namen ein:<br />
<input name="name" type="text" size="30"  onkeyup="sndReq();" autocomplete="off"/></span>
<span id="antwort"></span>
</form>
</body>
</html>


suggest.js:

Code:
function erzXMLHttpRequestObject(){
  var resObjekt = null;
  try {
    resObjekt = new ActiveXObject("Microsoft.XMLHTTP");
  }
  catch(Error){
    try {
      resObjekt = new ActiveXObject("MSXML2.XMLHTTP");
    }
    catch(Error){
      try {
      resObjekt = new XMLHttpRequest();
      }
      catch(Error){
        alert("Erzeugung des XMLHttpRequest-Objekts ist nicht möglich");
      }
    }
  }
  return resObjekt;
}


function sndReq() {
	if (document.f1.name.value != ""){
		resObject.open('get', 'suggest.jsp?name' + escape(document.f1.name.value.toLowerCase()) , true);
		resObject.onreadystatechange = handleResponse;
		resObject.send(null);
	}
	else {
		document.getElementById("antwort").style.visibility = "hidden";
	}
}


function handleResponse() {
	document.getElementById("antwort").style.visibility = "visible";
	if(resObject.readyState == 4) {
		document.getElementById("antwort").innerHTML = resObject.responseText;
	}
}

resObject=erzXMLHttpRequestObject();


function uebernehme(){
	document.f1.name.value = document.f1.vorschlag.value;
}


suggest.jsp:
Code:
<%@ page import="java.io.*" %>
<%@ page import="java.sql.*" %>
<%@ page import="eReportAuswertung.*" %>
<%@ page import="DBConfig.Config" %>
<%@ page import="java.util.*" %>
<%@ page import="java.lang.Math" %>

<jsp:useBean id="dba" class="eReportAuswertung.DBAbfrage" />

<%! ResultSet schiffAuswahl; %>

<%
String text = "<select name=\"vorschlag\" size=\"10\" onClick=\"uebernehme()\">";
String name = request.getParameter("name");
String vergleich = "";
schiffAuswahl = dba.getSchiffe();  

try {
	while (schiffAuswahl.next()) {
		vergleich = schiffAuswahl.getString(1).substring(0, Math.min(name.length(), schiffAuswahl.getString(1).length())).toLowerCase();
		if(name.equals(vergleich)){
			text += "<option>" + schiffAuswahl.getString(1) + "</option>"; }
	}
	schiffAuswahl.close();
}
catch (Exception e){
	e.printStackTrace();
	}


text += "</select>"; %>
<%= text %>
 
Hi,

was mir auffällt, ist ein fehlendes Gleichheitszeichen hinter dem URL-Parameter name.
Code:
resObject.open('get', 'suggest.jsp?name=' + escape(document.f1.name.value.toLowerCase()) , true);
Ansonsten funktioniert das Konstrukt bei mir, wenn ein gültiges Datenbankergebnis vorliegt.

Ciao
Quaese
 
:eek: Daaaaaaaaanke, genau das wars! Die selbstverständlichen Dinge übersieht man einfach.....phu! Du bist mein Retter :)

Jetzt stellt sich noch eine Frage...
Die Einträge erscheinen nun... aber leider kann man die mit dem IE 6.0 nicht anklicken und damit als Wert in das Textfeld übernehmen.

Hat hier jemand eine Idee wie man das lösen kann?

Thx!!
 
Hi,

ein Wert bzw. der Text in einem Selectfeld wird über seine Optionen und den gewählten Index angesprochen.
Code:
function uebernehme(){
  document.f1.name.value = document.f1.vorschlag.options[document.f1.vorschlag.selectedIndex].text;
}
Ich habe hier den Text statt des Wertes (value) gewählt, da in deinem JSP kein value-Attribut gesetzt wird.

Ciao
Quaese
 
Hey Quaese

Und auch das funktioniert super! Danke!

Jetzt habe ich nur noch ein zwei Fragen wo ich noch froh um Hilfe wäre...

Wie kann man das realisieren, dass man mit den Maustasten down drücken und über die vorgeschlagenen Werte navigieren kann? Und anschliessend wäre es von Vorteil wenn man das gewünschte Resultat mit Enter bestätigen könnte..

Ein kleines Problem habe ich noch in der bestehenden Version... Wenn ein Argument aus der Liste ausgewählt wird (suggest) dann wird der Eintrag zwar ins Textfeld eingetragen, aber das dropdown (<span>) verschwindet nicht! Habe schon versucht das abzufangen.. aber t irgendwie nicht...

Wär sehr froh über die letzten Antworten!
Danke im Voraus

drummy
 
dass die select-box wieder verschwindet habe ich unterdessen rausbekommen...

Code:
function uebernehme(){
	document.Auswertung.schiff.value = document.Auswertung.vorschlag.options[document.Auswertung.vorschlag.selectedIndex].text;
        document.getElementById("antwort").style.visibility = "hidden";
}


Das Problem mit dem Auswählen mit Tasten besteht jedoch.... wäre froh um Hilfe!
 

Neue Beiträge

Zurück