2013-11-26 6 views
6

Ich habe mich umgesehen und kann keine Antwort auf mein Problem finden. Ich habe jquery UI nicht viel benutzt, aber ich versuche, eine Autocomplete mit diesem Blog-Eintrag jQuery UI Autocomplete with JSON in MVC 4 als Leitfaden zu implementieren, weil es praktisch identisch ist mit dem, was ich brauche. Ich vermisse wahrscheinlich etwas "Offensichtliches", weil ich noch nicht alle Teile der Autocomplete-Syntax verstehe.JqueryUI Autocomplete Fehler: Uncaught TypeError: Eigenschaft 'Ergebnisse' des Objekts # <Object> ist keine Funktion

Ausgabe: Ich kann die Dropdown-Liste der Vorschläge angezeigt werden. Aber sobald ich es bekomme, bekomme ich einen Fehler in der Konsole. Auch wenn die Vorschläge erscheinen, kann ich keine davon auswählen. Die Liste verschwindet, sobald ich es versuche. Obwohl das etwas ganz anderes sein könnte.

Die Lage des Fehlers in der jqueryUI1.9.2 Code ist die letzte Zeile in diesem Snippet:

__response: function(content) { 
    var message; 
    this._superApply(arguments); 
    if (this.options.disabled || this.cancelSearch) { 
     return; 
    } 
    if (content && content.length) { 
     message = this.options.messages.results(content.length); 

Meine jquery wie folgt aussieht:

$("#FastCategory").autocomplete({ 
     source: function (request, response) { 
      $.ajax({ 
       url: "/Quiz/GetCategory", 
       type: "POST", 
       dataType: "json", 
       data: { term: request.term }, 
       success: function (data) { 
        console.log("data=",data); 
        response($.map(data, function (item) { 
         console.log("item=",item,item.Description); 
         return { label: item.Description, value: item.Description }; 
        })) 
       } 
      }) 
     }, 
     messages: { 
      noResults: "", results: "" 
     } 
    }); 

Mein Controller sieht wie folgt aus:

public JsonResult GetCategory(string term) 
{ 
    var result = (from r in db.QuizCategories 
        where r.Description.ToLower().Contains(term.ToLower()) 
        select new { r.Description }).Distinct(); 
    return Json(result, JsonRequestBehavior.AllowGet); 
} 

Irgendeine Idee, wo ich falsch liege?

Antwort

16

Wie Sie in einem Kommentar zu Narendra Antwort gezeigt haben, ist das Problem mit messages Option. Da antwortete here, results Eigenschaft, in messages Option muss eine Funktion sein, statt eine Zeichenfolge

jQuery(...).autocomplete({ 
    messages : { 
     noResults : '', 
     results : function(resultsCount) {} 
    } 
}); 
+0

Ich habe mich darum gekümmert, indem ich einfach den Nachrichtenbereich auskommentiert habe, aber Sie haben Recht, also danke. Gut zu wissen! – Joel

0

Scheint wie Sie beziehen sich auf eine Variable und versuchen, auf das gleiche wie eine Funktion zuzugreifen.

Ändern Sie einfach den Code zuweisen Sie den Inhalt zu Ergebnis und es würde funktionieren.

+1

gut, ja, so viel ich aus der Fehlermeldung wissen. :) Was ich nicht sehe, ist, was es verursacht. Ich konnte den Fehler durch Auskommentieren des Abschnitts "messages:" des Autocomplete-Aufrufs beheben. Ich werde darüber nachlesen müssen, um es besser zu verstehen. – Joel

Verwandte Themen