¿Cuál debería ser la respuesta correcta del servicio web para mostrar los resultados de entrada de token de Jquery?

Estoy usando un complemento de Jquery Token Input. Intenté recuperar los datos de la base de datos en lugar de los datos locales. Mi servicio web devuelve el resultado json envuelto en xml:

 [{"id":"24560","name":"emPOWERed-Admin"},{"id":"24561","name":"emPOWERed-HYD-Visitors"}] 

He comprobado en el sitio http://loopj.com/jquery-tokeninput/ que dice que la secuencia de comandos debe dar salida a los resultados de búsqueda JSON en el siguiente formato:

 [ {"id":"856","name":"House"}, {"id":"1035","name":"Desperate Housewives"} ] 

Ambos parecen ser iguales, pero aún así no obtengo los elementos que se muestran en mi página.

Estoy publicando mi código también. Mi código Js: DisplayTokenInput.js

  $(document).ready(function() { $("#textboxid").tokenInput('PrivateSpace.asmx/GetDl_info', { hintText: "Type in DL Name", theme: "facebook", preventDuplicates: true, searchDelay: 200 }); }); 

Mi código de servicio web:

 [WebMethod] [ScriptMethod(UseHttpGet = true, ResponseFormat = ResponseFormat.Json)] public string GetDl_info(string q) { string dl_input = string.Empty; DataSet ds; PSData ObjDl = new PSData(); ds = ObjDl.GetDistributionList(q); List DLObj = new List(); foreach (DataRow datarow in ds.Tables[0].Rows) { DistributionList dl_list = new DistributionList(); dl_list.id = Convert.ToString(datarow["id"]); dl_list.name = Convert.ToString(datarow["name"]); DLObj.Add(dl_list); } dl_input = JsonConvert.SerializeObject(DLObj); return dl_input; } } public class DistributionList { public string id { get; set; } public string name { get; set; } } 

Estoy publicando la parte de la cabeza del código aspx para mostrar los archivos de la biblioteca que he incluido:

   Untitled Page      --%>   

Debe asegurarse de que su solicitud sea una solicitud POST. No es una solicitud de obtención. Consulte esta respuesta para obtener más información acerca de por qué: Cómo permitir que un archivo ASMX emita JSON

Supongo que el código del complemento no establece el tipo de contenido para las solicitudes ajax a JSON, por lo que podría hacerlo usted mismo antes de la llamada de servicio con $ .ajaxSetup, es decir:

 $.ajaxSetup({ contentType: "application/json; charset=utf-8" }); 

ACTUALIZACIÓN: Aparentemente, los servicios de ASMX a veces tienen problemas con la porción ‘charset = utf-8’, por lo que si eso no funciona, puedes probar con ‘application / json’

ACTUALIZACIÓN 2 :

No creo que sea el contentType el que causa el problema, use lo siguiente para forzar un POST para solicitudes ajax y vea si esto lo soluciona:

 $.ajaxSetup({ type: "POST", contentType: "application/json; charset=utf-8" }); 

ACTUALIZACIÓN 3 :

Hay una configuración predeterminada dentro del complemento que está utilizando que puede cambiar las solicitudes de GET a POST. Mira aquí en su repository de GitHub: jquery.tokeninput.js

y en su copia del archivo js en el proyecto, cambie la línea:

 var DEFAULT_SETTINGS = { // Search settings method: "GET", 

a

 var DEFAULT_SETTINGS = { // Search settings method: "POST", 

También asumo que el plugin construye la consulta de una manera que ignora la configuración global de jquery ajax de todos modos, por lo que ya no debería necesitar incluir mis fragmentos anteriores.