asp.net asp.net-mvc-3 internet-explorer-7

asp.net - JSON no está definido en IE7



asp.net-mvc-3 internet-explorer-7 (4)

Funciona bien en Chrome, Firefox y IE8. Pero aparece un error en IE7. Aquí está mi evento en jquery onchange.

$(''select#NationId'').change(function () { var nationId = $(this).val(); $.ajax({ url: ''LoadAreas'', type: ''POST'', data: JSON.stringify({ nationId: nationId }), dataType: ''json'', contentType: ''application/json'', success: function (data) { $(''select#AreaId'').get(0).options.length = 0; $(''select#AreaId'').append(''<option value="0">Select All</option>''); $.each(data, function (val, Areas) { $(''select#AreaId'').append(''<option value="'' + Areas.Id + ''">'' + Areas.Name + ''</option>''); }); } }); });

controlador

[HttpPost] public ActionResult LoadAreas(int nationId) { var _Areas = (from c in SessionHandler.CurrentContext.ChannelGroups join cgt in SessionHandler.CurrentContext.ChannelGroupTypes on c.ChannelGroupTypeId equals cgt.ChannelGroupTypeId where cgt.Name == "Area" && c.ParentChannelGroupId == nationId select new AreaName() { Id = c.ChannelGroupId, Name = c.Name }).OrderBy(m => m.Name); if (_Areas == null) return Json(null); List<AreaName> managers = (List<AreaName>)_Areas.ToList(); return Json(managers); }



No debería

data: { "nationId": nationId },

¿solo trabajo?


Si el navegador no implementa el objeto JSON, siempre puede usar JSON2.j para proporcionarlo. Si recuerdo correctamente, esta implementación en particular se usa ampliamente y se difiere al navegador, por lo que solo necesitas soltarla, sin necesidad de ajustes.


$(''select#NationId'').change(function () { var nationId = $(this).val(); var data = ''{"nationId": "'' + nationId + ''"}''; $.ajax({ url: ''LoadAreas'', type: ''POST'', data: data , dataType: ''json'', contentType: ''application/json'', success: function (data) { $(''select#AreaId'').get(0).options.length = 0; $(''select#AreaId'').append(''<option value="0">Select All</option>''); $.each(data, function (val, Areas) { $(''select#AreaId'').append(''<option value="'' + Areas.Id + ''">'' + Areas.Name + ''</option>''); }); } }); });