Подтвердить что ты не робот

JSON undefined в IE7

Он отлично работает в chrome, firefox и IE8. Но появляется ошибка IE7. Вот мое событие 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>');
                });
            }
        });
    });

контроллер

[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);
    }
4b9b3361

Ответ 2

Если браузер не реализует объект JSON, вы всегда можете использовать стороннюю библиотеку, чтобы предоставить его вам. Если я правильно помню, эта конкретная реализация широко используется и отбрасывается в браузер, поэтому вам просто нужно ее отбросить, без необходимости настройки.

Ответ 3

Не стоит

data: { "nationId": nationId },

просто работать?

Ответ 4

$('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>');
            });
        }
    });
});