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);
}
El problema es que el objeto JSON no está disponible en IE 7. JSON2.j incluir JSON2.j s en su página para los usuarios de IE <8.
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>'');
});
}
});
});