我在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?
非常感谢