2010-12-16 14 views
2

Ich habe eine Website mit einer wachsenden Anzahl von AJAX-Anrufen.Autocomplete-Methoden in separate Web-Datei einfügen?

Ich habe AJAX-Code, der wie folgt aussieht:

function setupNameAutocomplete(id) { 
    $(id).autocomplete({ 
     source: function(request, response) { 
      $.ajax({ 
       url: "selectName.aspx/getNameAutocomplete", 
    .... 

Ursprünglich wurde die oben Javascript-Code auf einer Webseite verwendet, wo ein Benutzer im Namen einer Person eingegeben zu suchen; Ich entschied, dass ich den Namen automatisch vervollständigen wollte.

Als ich jedoch mit der Entwicklung der Website fortfuhr, beschloss ich, dass ich den gleichen "Namen" -Autoverschluss auf vielen Seiten verwenden konnte. Logischerweise war es sinnvoll, meinen JavaScript-Code in eine externe .js-Datei zu schreiben, anstatt sie auf jeder Seite zu wiederholen.

Es macht auch Sinn, dass ich den .NET-Code, der den AJAX behandelt, auch in seine eigene Datei schreiben möchte. Die .net zur automatischen Vervollständigung Code sieht wie folgt aus:

[WebMethod] 
    public static IEnumerable<string> getNameAutocomplete(string text) 
    { 
     IEnumerable<string> values = lookupNamesThatStartWith(text); 
     return values; 
    } 

Natürlich ist es wie diese Codes schien gehört in einem externen .asmx oder vielleicht eine .ashx Datei, aber ich kann meine Javascript-Code funktioniert nicht bekommen, wenn ich den Anruf über Code von selectName.aspx.

Wie kann ich meinen AJAX .net-Code in einer separaten Codedatei erhalten?

+0

diese Frage Siehe http://stackoverflow.com/questions/457183/how-can-we-integrate-jquery-autocomplete-using-asp-net-webservie-and-sql-databas ** UND ** http: //stackoverflow.com/questions/305994/jquery-autocomplete-and-asp-net –

+0

Seit der automatischen Vervollständigung von Plug-ins oder der jQuery-UI-Version kann es hilfreich sein, zu wissen, welche. –

Antwort

0

Wenn ich Ihr Problem richtig verstehe, wäre eine praktikable Lösung, eine Basisklasse zu haben, von der Ihre Dienste erben, die das generische WebMethod implementieren würde.

Das, oder Sie könnten es "ziemlich sauber" bekommen, indem Sie die Logik der Autocomplete-Lookup abstrahiert in eine Klasse und rufen Sie es einfach von Ihrem WebMethod s bei Bedarf.