我已调用ajax调用将数据(140个大小的字符)保存到数据库中,然后在第一次调用的成功函数中再次调用ajax。 它在FF i中工作正常,当点击该按钮时它将被保存,然后成功检索该数据(我需要这些数据显示时间戳)。但是在IE中它工作正常只有一次,意味着当点击按钮时,一组数据将被保存然后显示,但再次单击按钮保存另一组数据,但不显示该数据,它显示以前的数据。我的代码是
的任何解决方案function save(){
$.ajax({
url : 'saveNote.html?note=' + notes,
success : function() {
// showNote(); //this is also not working in IE
setTimeout(function () { showNote(); }, 1000);
document.getElementById('notes').value="";
},
error: function (xhr, ajaxOptions, thrownError) {
alert('my error = ' + thrownError);
alert('my error1 = ' + ajaxOptions);
alert('my error2 = ' + xhr);
}
});
}
function showNote(){
$.ajax({
url : 'getNote.html',
method : "GET",
dataType: "json",
success : function(data) {
responseNote=data;
showLabel(responseNote);
},
error: function (xhr, ajaxOptions, thrownError) {
alert('my error = ' + thrownError);
alert('my error1 = ' + ajaxOptions);
alert('my error2 = ' + xhr);
}
});
}
答案 0 :(得分:4)
IE已知缓存AJAX请求。因此后续请求生成相同的输出。有许多方法可以解决这个问题。以下是一些:
<强> 1。随机附上随机数
$.ajax({
url: url,
data: inputs + '&ran=' + Math.rand(),
)};
<强> 2。随请求附上日期
$.ajax({
url: url,
data: inputs + '&time=' + new Date(),
)};
第3。禁用jQuery缓存
$.ajaxSetup ({
// Disable caching of AJAX responses
cache: false
});
我建议你使用第三种选择。
希望这有帮助
答案 1 :(得分:1)
这是因为IE缓存了您的请求。在这种情况下,您可以在输入中添加一个额外参数,例如日期。这将使您的所有通话都独一无二。
$.ajax({
url: url,
beforeSend: function (data) { },
data: inputs + '&time=' + new Date(),
success: function (data) { },
error: function (data) { }
)};
您可以在服务器端忽略 time 参数。
在你的情况下,它将是
function save(){
$.ajax({
url : 'saveNote.html?note=' + notes + '&time=' + new Date(),
success : function() {
// showNote(); //this is also not working in IE
setTimeout(function () { showNote(); }, 1000);
document.getElementById('notes').value="";
},
error: function (xhr, ajaxOptions, thrownError) {
alert('my error = ' + thrownError);
alert('my error1 = ' + ajaxOptions);
alert('my error2 = ' + xhr);
}
});
}
function showNote(){
$.ajax({
url : 'getNote.html' + '&time=' + new Date(),
method : "GET",
dataType: "json",
success : function(data) {
responseNote=data;
showLabel(responseNote);
},
error: function (xhr, ajaxOptions, thrownError) {
alert('my error = ' + thrownError);
alert('my error1 = ' + ajaxOptions);
alert('my error2 = ' + xhr);
}
});
}
如果这是您正在寻找的答案,请标记答案。感谢。
答案 2 :(得分:0)
在你的ajax调用足够IE 7和8之前放置此函数
$.ajaxSetup ({cache: false});