vendredi 6 décembre 2013

Error javascript Uncaught TypeError: Cannot use 'in' operator to search for...

J'ai récemment rencontré cette erreur javascript lors d'appels AJAX avec Jquery sur une application ASP.NET MVC 4. Je me rendu compte que la plupart du temps, cette erreur était dû au fomat du "data" retournée par le serveur, notamment la confusion entre le type "string" et "json".

Ci-dessous le code serveur qui me retourne la liste d'éléments :
public JsonResult ListItems()
{
      var response = itemService.ListItems(new ItemRequest());
      return Json(response.Items, JsonRequestBehavior.AllowGet);
}

voici mon code javascript qui plantait au départ :
var maList = new Array();
  $.ajax({
            url: '/Home/ListItems',
            type: 'GET',
            cache: false,
            success: function (data) {
              AlarmsList = data;
              ...

En changeant l'affectation directe de ma liste json en retour, puis en précisant le type de retour en plus, le problème a été résolu.

var AlarmsList = new Array();
  $.ajax({
            url: '/Home/ListItems',
            type: 'GET',
            cache: false,
            dataType: 'json',
            success: function (data) {
              $.each(data, function(i, alarm){
                AlarmsList.push(alarm);
              ...
 });

Ce ticket jquery suivant mentionne cette erreur 'type'; Mais ce message d'erreur Javascipt est assez générique et peut apparaître dans d'autres contextes que celui de mon exemple d'appel ajax. Cependant, Il fera très souvent référence à un problème de manipulation/parcours d'éléments dans un tableau Javascript.

Aucun commentaire:

Enregistrer un commentaire