2012-06-19 32 views
13

Đây là một câu hỏi dựa trên: Trying to get tag-it to work with an AJAX calljQuery TagIt (autocomplete) danh sách tìm nạp JSON qua AJAX

Tuy nhiên, ở trên chỉ tạo ra một thông báo lỗi của 'this.source không phải là một chức năng' cho tôi.

Tôi đang cố gắng lấy danh sách json này để xuất hiện dưới dạng nguồn thẻ cho thẻ thông qua ajax. Mã bên dưới:

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

Các trở về cuộc gọi ajax:

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

Trả lời

2

Lỗi này là do tôi sử dụng một phiên bản cũ của thẻ nó. Nếu bạn nhận được lỗi tương tự chắc chắn rằng bạn đang sử dụng phiên bản mới nhất của tagit

3

Bạn có lẽ nên sử dụng một cái gì đó như thế cho trình xử lý thành công:

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

Tôi đang hiển thị loại đối tượng mà có ID và Tên thuộc tính .

17

Check-out this code có thể giúp bạn

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

Thanks a lot, @rjdmello đoạn mã của bạn đang làm việc một cách hoàn hảo và đó là câu trả lời tốt nhất ở đây. – DccBr

+0

melhor resposta. – cura

3

Tôi nghĩ rằng bạn có thể ghi đè lên các phương pháp autocomplete từ 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

Các autocomplete.source nên được ghi đè nếu bạn muốn sử dụng tùy chỉnh các nguồn tự động hoàn thành, như phản hồi Ajax/XHR.

Ví dụ:

$("#myTags").tagit({ 
    autocomplete: { 
     delay: 0, 
     minLength: 2, 
     source : 'your data response' 
    } 
}); 
Các vấn đề liên quan