Ajax und eigenes Autocomplete: Seltsames Verhalten

05/12/2007 - 10:29 von Peter Tübben | Report spam
Hallo,

folgendes Szenario:

Ich habe eine Webseite mit einer Textbox. Wenn der Anwender etwas in
der Textbox eintippt, so soll eine Datenbank abgefragt werden und die
passenden Ergebnisse in einem unter der Textbox befindlichen DIV-
Element eingetragen werden (Den Source habe ich unten mal angefügt;
Der Einfachheit halber liefert hier die Funktion zur Datenbankabfrage
nur den eingegebenen Text zurück).


Mein Problem:

Starte ich die Webseite in meinem VS2005, so funktioniert alles
wunderbar und wie erwartet (sowohl unter IE als auch im FF). Wenn in
der Textbox etwas eingetippt wird, so erscheint dieser Text auch in
dem darunterliegenden DIV-Element.

Wenn ich nun die Webseite auf meinen Webspace hochlade, dann passieren
merkwürdige Dinge:

FireFox: Sobald ich etwas in der Textbox eingebe, so wird
augenscheinlich der gesamte Webseiten-Inhalt in das DIV eingefügt
(unter der Textbox erscheint pro eingegebenes Zeichen je eine weitere
Textbox)

IE: Hier erscheint direkt nach Eingabe des ersten Zeichen folgende
Fehlermeldung in einer Messagebox:

- schnipp -

The server method 'GetList' failed with the following error:
System.InvalidOperationException-- An attempt was made to call the
method 'GetList' using a GET request, which is not allowed.

- schnapp -

Meine Frage:

Warum verhàlt sich die Webseite so seltsam, wenn sie auf meinen
Webspace hochgeladen wird? Andere ASPX-Seiten (ohne Ajax)
funktionieren problemlos. Wer kann mir einen Tipp geben?


Danke im voraus & Grüße ... Peter

P.S.: Der AutoCompleteExtender ist mir bekannt. Allerdings möchte ich
nicht, dass unter der Textbox ein Popup aufklappt, in dem die
Ergebnisse stehen, sondern dass sie (wie oben beschrieben) in einem
separaten Element auf der Webseite erscheinen. Insofern fàllt für mich
der AutoCompleteExtender weg.

[Source]:

- schnipp -

<%@ Page Language="VB" %>

<%@ Register Assembly="System.Web.Extensions, Version=1.0.61025.0,
Culture=neutral, PublicKeyToken1bf3856ad364e35"
Namespace="System.Web.UI" TagPrefix="asp" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://
www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">

<script runat="server">

<System.Web.Services.WebMethod()> _
Public Shared Function GetList(ByVal SearchString As String) As
String
Return SearchString
End Function

</script>

<html xmlns="http://www.w3.org/1999/xhtml">
<head runat="server">
<title>SuggestTest</title>

<script language="javascript" type="text/javascript">

function ExecGetList()
{
var myInput = document.getElementById("txtInput");
PageMethods.GetList(myInput.value, onComplete);
}

function onComplete(result)
{
document.getElementById("divSuggest").innerHTML = result;
}

</script>

</head>
<body>
<form id="form1" runat="server">
<div>
<asp:ScriptManager ID="ScriptManager1" runat="server"
EnablePageMethods="True">
</asp:ScriptManager>
<input id="txtInput" type="text" onkeyup="ExecGetList()" />
<div id="divSuggest" />
</div>
</form>
</body>
</html>

- schnapp -
 

Lesen sie die antworten

#1 Peter Tübben
06/12/2007 - 14:31 | Warnen spam
oha, das scheint doch ein wenig kniffliger als gedacht zu sein ;-)

Alternativ wàre ich auch dankbar für einen anderen Lösungsansatz. Es
muss also nicht wie oben gezeigt aussehen.

Ziel ist es halt, dass ich in einer Textbox etwas eingebe und ich
daraufhin in eine VB-Funktion springen kann, die mir die
entsprechenden Matches zurückgibt, welche wiederum in ein DIV
eingetragen wird. Im Prinzip sowas wie der AutoCompleteExtender, nur
mit angebbaren Ergebniszielelement.

Wer weiß Rat?

Danke & Grüße ... Peter

Ähnliche fragen