2014-09-11 1 views
0

Peu importe comment je renvoie les données, en tant que liste ou en tant que chaîne JSON, le plugin jQuery Autocomplete n'affiche pas les valeurs dans la liste déroulante.JQuery Saisie semi-automatique avec la source pointant vers .aspx

Javascript:

$("#myText").autocomplete({ 
    source: function (request, response) { 
     $.ajax({ 
      type: "POST", 
      url: "Default.aspx/GetList", 
      contentType: "application/json; charset=utf-8", 
      dataType: "json", 
      data: "{'term':'" + request.term + "'}", 
      success: function (data) { 
       response(data); 
      }, 
      error: function (xhr, error) { 
       console.debug(xhr); console.debug(error); 
      } 
     }); 
    }, 
    minLength: 0, 
    select: function (event, ui) { 
     var result = ui.item.id; 
    } 
}); 

côté serveur (.aspx):

[ScriptMethod(ResponseFormat = ResponseFormat.Json), WebMethod] 
public static string GetList(string term) 
{ 
    List<string> list = new List<string>(); 
    list.Add("apple"); 
    list.Add("apricot"); 
    list.Add("apple cider"); 

    string json = "[" + string.Join(",", 
    list.Select(i => 
     "{ 'id': '" + i + "'" + "}" 
    )) + "]"; 

    return json; 
} 

Je joins 2 photos, la première montre comment il est affiché dans le navigateur, le second est un point d'arrêt en javascript.

Qu'est-ce que je fais mal?

enter image description here enter image description here

Répondre

0

utilisé JavaScriptSerializer, et cela a fonctionné.

[ScriptMethod(ResponseFormat = ResponseFormat.Json), WebMethod] 
public static string GetList(string term) 
{ 
    List<string> list = new List<string>(); 
    list.Add("apple"); 
    list.Add("apricot"); 
    list.Add("apple cider"); 

    JavaScriptSerializer serialize = new JavaScriptSerializer(); 
    string result = serialize.Serialize(list); 
    return result; 
} 
Questions connexes