Несовместимый IE8 успешный пост ajax от MVC2 - PullRequest
1 голос
/ 15 июля 2010

Я получаю некую устойчивую ошибку в IE8, это происходит примерно в половине случаев.У меня есть каскадные выпадающие списки, использующие ajax для получения следующих опций окна выбора.

 $(function () {
    $("#stock_item_id").change(function () {
        var stock_item = $("#stock_item_id > option:selected").attr("value");

        $.ajax({
            type: "POST",
            contentType: "application/json; charset=utf-8",
            url: "/Unit/ForStockItem/" + stock_item,
            data: "{}",
            dataType: "json",
            success: function (data) {
                var options = '';
                var selected = "0";
                for (p in data) {
                    var unit = data[p];
                    if (unit.selected == "true") { selected = unit.id; }
                    options += "<option value='" + unit.id + "'>" + unit.name + "</option>";
                }
                $("#unit_id").removeAttr('disabled').html(options);
                $("#unit_id").val(selected);
            }
        });
    });
});

И действие контроллера MVC2

public JsonResult ForStockItem(int id)
    {
        StockItemRepository stockItemRepository = new StockItemRepository(repository.db);

        tblStockItem stockItem = stockItemRepository.Single(id);
        return new JsonResult
        {
            Data = repository.parentList(stockItem.tblUnit.BaseUnitId, stockItem.unit_id)
        };
    }

Это работает на 100% из Firefox, Chrome и т. Д. И около половинывремя в IE8.Когда это не работает в IE8, переменная данных равна нулю в jquery.

Если я изменяю запрос на GET и добавляю JsonRequestBehavior = JsonRequestBehavior.AllowGet в JsonResult, он работает на 100% в IE8 (без других изменений кода).Хотя это решение, оно не идеально.Это известная ошибка в Jquery и IE8, что я могу сделать, чтобы исправить ее и все еще использовать POST?

Большое спасибо

...