2010-08-12 5 views
-1

J'ai ce travail avec une source de données locale mais pas à distance. Il utilise la librairie Jquery et j'ai suivi les instructions sur le site de l'interface Jquery. C'est le code que j'ai (qui ne fonctionne pas). Quelqu'un peut-il a) modifier ce code pour travailler b) montrer le code d'un exemple de travail ?? Merci:JQuery Autocomplete et la base de données ASP .NET MVC en tant que source de données

JQUERY

$('#countries').autocomplete({ 
     source: "/Trip/Lookup", 
     minLength: 0, 
     focus: function (event, ui) { 
      $('#countries').val(ui.item.label); 
      return false; 
     }, 
     select: function (event, ui) { 
      return false; 
     } 
    }).data("autocomplete")._renderItem = function (ul, item) { 
     return $("<li></li>") 
      .data("item.autocomplete", item) 
      .append("<a>" + item.label + "</a>") 
      .appendTo(ul); 
    }; 

ActionResult

public ActionResult Lookup(string q, int limit) 
    { 
     List<DestinationVM> list = new List<DestinationVM>(); 
     list.Add(new DestinationVM { Destination = "England", Cost = 12 }); 
     list.Add(new DestinationVM { Destination = "New Zealand", Cost = 10 }); 
     list.Add(new DestinationVM { Destination = "Australia", Cost = 8 }); 

     var data = from s in list select new { s.Destination, s.Cost }; 

     return Json(data); 
    } 
+0

double possible de [Comment puis-je déboguer mon code JavaScript?] (Http://stackoverflow.com/questions/988363/how-can-i-debug-my-javascript-code) – Liam

Répondre

0

Modifier votre définition d'action pour ressembler à ceci:

public ActionResult Lookup(string term) 

Le plugin autocomplete envoie une requête avec un paramètre de requête appelé term qui contient les caractères que l'utilisateur a tapés dans le zone de texte jusqu'à présent.

Aussi, essayez de changer votre projection Linq à ceci:

var data = from s in list select new { label = s.Destination, value = s.Cost }; 

Le plugin autocomplete attend soit un tableau plat de valeurs ou un tableau d'objets JSON qui ont une étiquette et la propriété valeur.

+0

cela n'a pas résoudre mon problème. D'autres idées? – user375564

+0

@user Mise à jour de la réponse pour un autre correctif que vous aurez besoin de faire. – joshperry

0

L'action sur le contrôleur était incorrecte. Cela aurait dû être:

Les modifications sont dans le paramètre d'entrée et l'inclusion du paramètre de retour JsonRequestBehavior.AllowGet. Cela fonctionne maintenant.

public ActionResult Lookup(string term) 
    { 

     var result = _TripRep.GetAutoCompleteDestination(term, 5); 

     var data = from s in result select new { label = s.Destination, value = s.Cost }; 

     return Json(data, JsonRequestBehavior.AllowGet); 

    } 
Questions connexes