2012-06-19 31 views
13

Esta es una cuestión sobre la base de: Trying to get tag-it to work with an AJAX calljQuery TagIt (autocompletar) Lista Fetching JSON a través de AJAX

No obstante lo anterior sólo crea un mensaje de error de 'this.source no es una función' para mí.

Estoy tratando de hacer que esta lista json aparezca como el origen de la etiqueta para tagit a través de ajax. Código de abajo:

// Tagit 
$("#tags").tagit({  
    tagSource: function() { 
     $.ajax({ 
      url: "/admin/ajax.php?q=fetch_all_tags", 
      dataType: "json", 
      success: function(data) { 
       console.log(data); 
       return data; 
      } 
     }); 
    }  
}); 

Las devoluciones de llamada ajax:

{"4":"php","2":"html","3":"css"} 

Respuesta

2

Este error fue causado por mí usando una versión antigua de etiqueta de la misma. Si se obtiene el mismo error asegurarse de que está utilizando la versión más reciente de TagIT

3

que es mejor usar algo así por manejador de éxito:

success: function (categoriesList) { 
    response($.map(categoriesList, function (category) { 
     return { 
      label: category.Name + " (ID: " + category.ID + ")", 
      value: category.Name 
     }; 
    })); 
} 

estoy mostrando Categorías objetos que tienen propiedades ID y NAME .

17

Salida this code puede ayudarle a

$("#mytags").tagit({ 
    autocomplete: { 
     source: function(request, response) { 
      /*call api*/ 
     } 
    } 
}); 
+0

Muchas gracias, @rjdmello el fragmento de código está funcionando perfectamente y es la mejor respuesta aquí. – DccBr

+0

melhor resposta. – cura

3

Creo que se puede sobrescribir el método de autocompletar de interfaz de usuario jQuery:

<!-- language: lang-js --> 

$('.tags ul').tagit({ 

    itemName: 'question', 
    fieldName: 'tags', 
    removeConfirmation: true, 
    //availableTags: ["c++", "java", "php", "javascript", "ruby", "python", "c"] 
    allowSpaces: true, 
    // tagSource: ['foo', 'bar'] 
    tagSource: function() { 
     $.ajax({ 
      url: "/autocomplete_tags.json", 
      dataType: "json", 
      data: { 
       term: 'ruby' 
      }, 
      success: function (data) { 
       console.log(data); 
       return data; 
      } 

     }); 
    }, 
    autocomplete: { 
     delay: 0, 
     minLength: 2, 
     source: this.tagSource() 
    } 
}); 
4

El autocomplete.source debe ser anulado si desea utilizar personalizada fuentes de autocompletado, como una respuesta Ajax/XHR.

Por ejemplo:

$("#myTags").tagit({ 
    autocomplete: { 
     delay: 0, 
     minLength: 2, 
     source : 'your data response' 
    } 
}); 
Cuestiones relacionadas