2012-06-19 10 views
13

Questa è una domanda basata su: Trying to get tag-it to work with an AJAX calljQuery Tagit (autocomplete) Lista Recupero JSON tramite la tecnologia AJAX

Tuttavia quanto sopra solo crea un messaggio di errore di 'this.source non è una funzione' per me.

Sto tentando di visualizzare questa lista JSON come origine tag per tagit tramite ajax. Codice qui sotto:

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

Ajax chiamata ritorna:

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

risposta

2

Questo errore è stato causato da me usando una vecchia versione di tag esso. Se si ottiene lo stesso errore assicurarsi che si sta utilizzando la versione più recente di Tagit

3

probabilmente dovreste usare qualcosa di simile per il gestore il successo:

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

Sto mostrando le categorie oggetti che hanno ID e Nome proprietà .

17

Partenza this code può aiutare a

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

Grazie mille, @rjdmello tuo frammento di codice è perfettamente funzionante ed è la migliore risposta qui. – DccBr

+0

melhor resposta. – cura

3

Penso che si può sovrascrivere il metodo di completamento automatico da jQuery UI:

<!-- 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

L'autocomplete.source dovrebbe essere ignorato se si desidera utilizzare personalizzato sorgenti di autocompletamento, come una risposta Ajax/XHR.

Ad esempio:

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