不一致的IE8 ajax从MVC2成功发布

时间:2010-07-15 14:51:14

标签: jquery asp.net-mvc-2 post internet-explorer-8 get

我在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中为null。

如果我将请求更改为GET并将JsonRequestBehavior = JsonRequestBehavior.AllowGet添加到JsonResult,它在IE8中100%工作(没有其他代码更改)。虽然这是一个解决方案,但它并不理想。这是Jquery和IE8的已知错误,我该怎么做才能修复它并仍然使用POST?

非常感谢

0 个答案:

没有答案