2014-10-22 25 views
5

Tôi đã mã này cho tạo ra một yếu tố Select2 từ một lĩnh vực đầu vào:Select2 "Lỗi Loại: một là không xác định" lỗi

var codigo_arancelario = $codigo_arancelario.val(); 

$codigo_arancelario.select2({ 
    placeholder: "Seleccione un estado", 
    ajax: { 
     dataType: 'json', 
     url: function() { 
      return Routing.generate('obtenerCodigoArancelario'); 
     }, 
     data: function (codigo_arancelario) { 
      return { 
       filtro: codigo_arancelario 
      } 
     }, 
     results: function (data) { 
      var myResults = []; 
      $.each(data.entities, function (index, item) { 
       myResults.push({ 
        'id': item.id, 
        'nombre': item.nombre 
       }); 
      }); 
      return { 
       results: myResults 
      }; 
     } 
    }, 
    formatNoResults: function() { 
     return "No se encontró el código"; 
    }, 
    formatAjaxError: function() { 
     return "No hay conexión con el servidor"; 
    } 
}); 

Nhưng bất cứ lúc nào tôi cố gắng sử dụng nó tôi nhận được lỗi này trên Firebug console:

TypeError: a is undefined

tôi đã kiểm tra các tiêu đề phản ứng và tôi đã nhận một Content-Type application/json và tôi cũng kiểm tra các tiêu đề Yêu cầu kể từ khi tôi đang sử dụng Symfony2 ở phía máy chủ và nó gửi X-Requested-With XMLHttpRequest. Hàm Symfony2 trả về JSON như sau:

{ 
    "valid":false, 
    "entities":[ 
     { 
     "id":101, 
     "codigo":"4545", 
     "descripcion":null 
     }, 
     { 
     "id":102, 
     "codigo":"45455", 
     "descripcion":"gfhgfhfghfgh" 
     }, 
     { 
     "id":103, 
     "codigo":"45457", 
     "descripcion":"etert" 
     } 
    ] 
} 

Lỗi trên mã của tôi ở đâu?

+0

@MohitArora không ai trong số cả nó có dữ liệu. Ví dụ JSON là gì 'data.entities' có – ReynierPM

+1

http://jsfiddle.net/arunpjohny/e39ftb64/1/ –

Trả lời

5

Select2 hy vọng [{text="john doe",id="1"},{text="jane doe",id="2"}]

vì vậy bạn cần phải thay đổi 'nombre': item.nombre để 'text': item.nombre nó sẽ giống như sau:

myResults.push({ 
     'id': item.id, 
     'text': item.nombre 
}); 
+0

Vẫn nhận được lỗi tương tự – ReynierPM

+1

@ReynierPM 'item.nombre' là không xác định tôi nghĩ bạn cần' item.descripcion' –

-1

Có thể dữ liệu của bạn là sai formate:
dữ liệu Loại: PlainObject hoặc String hoặc mảng dữ liệu được gửi đến máy chủ. Nó được chuyển thành chuỗi truy vấn, nếu chưa phải là một chuỗi. Nó được nối vào url cho các yêu cầu GET. Xem tùy chọn processData để ngăn việc xử lý tự động này. Đối tượng phải là cặp khóa/giá trị. Nếu giá trị là một mảng, jQuery nối tiếp nhiều giá trị với cùng một khóa dựa trên giá trị của cài đặt truyền thống (được mô tả bên dưới).

thấy jquery for ajax

+0

Và? Tôi không theo bạn hoặc không thấy điều này hữu ích, xin lỗi – ReynierPM

+0

sử dụng gỡ lỗi tại điểm ngắt tại dòng: var myResults = []; in kết quả của giá trị ngăn xếp. –

Các vấn đề liên quan