2014-10-22 80 views
5

我有這個代碼創建從輸入字段Select2元素:選擇二「類型錯誤:一個是未定義」錯誤

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"; 
    } 
}); 

但任何時候,我嘗試使用它,我得到Firebug的控制檯上的錯誤:

TypeError: a is undefined

我檢查響應頭,我得到了一個Content-Type application/json,也是我檢查請求頭,因爲我在服務器端使用Symfony2中,並將其發送的X-Requested-With XMLHttpRequest。 Symfony2函數返回一個這樣的JSON:

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

我的代碼的錯誤在哪裏?

+0

@MohitArora沒有雙方有數據。示例JSON是什麼'data.entities'有 – ReynierPM 2014-10-22 04:52:50

+1

http://jsfiddle.net/arunpjohny/e39ftb64/1/ – 2014-10-22 07:10:30

回答

5

選擇二預計[{text="john doe",id="1"},{text="jane doe",id="2"}]

,所以你需要改變'nombre': item.nombre'text': item.nombre 它應該看起來像如下:

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

仍然收到相同的錯誤 – ReynierPM 2014-10-22 05:12:01

+1

@ReynierPM'item.nombre'未定義我認爲你需要'item.descripcion' – 2014-10-22 05:23:51

-1

可能是你的數據是錯誤的甲:
數據 類型:PlainObject或字符串數​​組或數據 被髮送到服務器。它被轉換成查詢字符串,如果還不是字符串的話。它附加到GET請求的url。請參閱processData選項以防止此自動處理。對象必須是鍵/值對。如果value是一個數組,則jQuery會根據傳統設置的值(如下所述)使用相同的鍵序列化多個值。

看到jquery for ajax

+0

而且?我不關注你,或者沒有發現這有幫助,對不起 – ReynierPM 2014-10-22 04:59:17

+0

在斷點處使用調試:var myResults = [];打印堆棧值的結果。 – 2014-10-22 05:00:35

相關問題