2017-01-26 18 views
5

khi sử dụng multiselect Select2 và chọn một tùy chọn tôi nhận được thông báo lỗi này hiển thị:jquery Select2: Lỗi Loại: b.dataAdapter là null

TypeError: b.dataAdapter is null 

Có ai biết điều này là thế nào?

Tính năng chọn nhiều hoạt động tốt, tôi chỉ tự hỏi về thông báo này.

EDIT:

Đây là html của tôi:

<div class="form-group"> 
<label class="control-label col-md-12" for="participant-id">Participant  
<span class="required"> * </span> 
</label> 
<div class="col-md-12"> 
<input type="hidden" name="participant_id" value=""/> 
<select name="participant_id[]" multiple="multiple" class="form-control select2me participantSelector" required="required" id="participant-id"> 
<option value=""></option> 
</select> 
</div>         
</div> 

đây là init jquery:

$(".select2me").select2({placeholder:"Select",width:"auto",allowClear:!0}))} 

Các dữ liệu cho multiselect tôi nhận được nếu một giá trị được chọn trong danh sách thả xuống khác 'projectSelector':

$('.projectSelector').on('change', function() { 
     var targetProject_id = $('#project-id :selected').val(); 
     updateParticpantDropdown(targetProject_id); 
    }); 


function updateParticpantDropdown(selectedProjectId){ 
     $.ajax({ 
      type: "POST", 
      url: '/xx/projects/xx/'+ selectedProjectId, 
      dataType : "json", 
      success: function (response, status) { 
       if (response.result == "success"){ 
        var data = response.data; 
        $(".participantSelector").empty().select2({ 
         placeholder: "Click here to select participants", 
         allowClear: false, 
         data: data 
        }); 
       } 
      } 
     }); 
    } 

Dữ liệu được tải vào nhiều lựa chọn và mọi thứ hoạt động như mong đợi trên màn hình. Chỉ trong giao diện điều khiển tôi nhận được tin về lỗi của

TypeError: b.dataAdapter is null

này được phản ứng json của tôi (trong ngắn hạn):

{"result":"success","data":[{"id":18,"text":"xx, Ana Rosa"},{"id":17,"text":"xx, Saul"},{"id":14,"text":"xx, Jesus"},{"id":15,"text":"xx, Jose Sergio" 
},{"id":13,"text":"xx, Guadalupe"},{"id":12,"text":"xx, Adolfo"},{"id":25 
,"text":"xx, Roland"},{"id":16,"text":"xx, Mariela Elisa"},{"id":11,"text":"xx, Roberto Carlos "},{"id":19,"text":"xx, Jose Rafael"},{"id":2,"text":"xx, Juan Carlos"}]} 

Trong Chrome tôi nhận được tin nhắn này:

select2.full.min.js:2 
Uncaught TypeError: Cannot read property 'current' of null 
    at HTMLSelectElement.<anonymous> (select2.full.min.js:2) 
    at HTMLSelectElement.dispatch (jquery.min.js:3) 
    at HTMLSelectElement.r.handle (jquery.min.js:3) 
    at Object.trigger (jquery.min.js:3) 
    at HTMLSelectElement.<anonymous> (jquery.min.js:3) 
    at Function.each (jquery.min.js:2) 
    at n.fn.init.each (jquery.min.js:2) 
    at n.fn.init.trigger (jquery.min.js:3) 
    at d.select (select2.full.min.js:1) 
    at d.select (select2.full.min.js:2) 
+0

Vui lòng đăng html của bạn cho phần tử chọn và mã js bạn sử dụng để khởi tạo plugin select2. – andreivictor

+1

Tôi đã tạo ra một fiddle, nhưng tôi đã không thể tái tạo vấn đề của bạn. Không có lỗi trong Chrome: https://jsfiddle.net/01zb15mq/. – andreivictor

+0

Tôi nghĩ rằng tôi nhận được cùng một vấn đề khi tôi cố gắng cập nhật select2 của tôi với các thẻ khác nhau. Tôi đã kiểm tra điều này từ firefox và chrome. Cả hai erros ném: # chrome Version 56.0.2924.87 'của router Lỗi Loại: Không thể đọc thuộc 'hiện tại' của null' # firefox 51.0.1 ' Lỗi Loại: b.dataAdapter là null' Các jsfiddle có sẵn từ: https: // jsfiddle.net/PBrockmann/74v2gzhe/ – PBrockmann

Trả lời

4

Kể từ selector2 các yếu tố có xu hướng lưu trữ một số dữ liệu bổ sung, tôi đã nhận thấy khi dữ liệu của phần tử danh sách bị xóa ngoài $(".participantSelector").empty() lỗi đã biến mất. Vì vậy, hãy thử theo cách này:

var selector = $(".participantSelector"); 
selector.empty(); 
selector.removeData(); 
selector.select2({ 
    placeholder: "Click here to select participants", 
    allowClear: false, 
    data: data 
}); 

Hy vọng nó cũng phù hợp với bạn.

0

Tôi nghĩ rằng đây là một vấn đề vì bạn đã khởi tạo chọn thả xuống với một giá trị null. Về cơ bản, kịch bản lệnh cho bạn thả xuống được khởi tạo nhưng không có dữ liệu trong đó. Để giải pháp, vui lòng thêm một giá trị

<option value="0">Please Select</option>

Phần còn lại của mọi thứ có vẻ đúng.

2

bạn nên xóa .empty() và sử dụng như dưới đây. nó hoạt động tốt cho bạn ..

$(".participantSelector").select2({ 
    placeholder: "Click here to select participants", 
    allowClear: false, 
    data: data 
}); 
Các vấn đề liên quan