我正在使用一个boostrap对话框来拉动数量的列表。提交表格后,打开对话框以检查数量是否已更新,似乎是陈旧的数据。我打电话给控制器,然后返回数据库,以获取更新的信息。但是,当我在控制器(在服务器端)中设置一个断点时,它永远不会击中。只有在我为调用开发人员工具和调试器中调用ajax的函数设置一个断点时,它才会踢出问题。我也看不到任何控制台错误。
我没有Firefox的问题,只有IE11 ..这是代码:
<script type="text/javascript">
function LocationModal() {
$("#GetLocBtn").attr("disabled", "disabled");
var partNumber = $("#PartNum").val();
var Condition = 'Z';
var urlQry;
var receiveIsChecked = document.getElementById('Receive').checked;
var src = 'removed for security';
$.ajax({
type: "GET",
url: src,
dataType: "json",
contentType: "application/json; charset=utf-8",
data: { partNumber: partNumber, CCODE: Condition },
beforeSend: function () {
},
success: function (data) {
$("#LocationModalContainer").html(data.LocationModal);
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
}
});
};
问题确实是IE缓存了Ajax调用的结果。您可以通过像发现的那样将cache: false
添加到每个呼叫中,或者在拨打任何呼叫之前通过ajaxSetup
设置它来防止这种行为。
$.ajaxSetup({
cache: false
});
在jQuery文档中不建议使用AjaxSetup,但是如果您不使用任何可能依赖正常行为的插件并想快速确保您自己的Ajax呼叫都不是的,则可能是一个很好的解决方案缓存。
就个人而言,我对文档中提到的干扰风险的真实风险有多么疑问,因为基本上您只是使IE像其他浏览器一样行为。