第二个 Ajax 调用已填充成功结果
Second Ajax call already populated with success results
我有一个 Ajax 呼叫是通过按下按钮进行的,returns 我一些数据然后关闭并创建一个网格。第一次调用该函数时,会进行 Ajax 调用,返回数据并显示网格。快乐的时光。
然而,对该函数的任何后续调用,其中 none 的数据参数已更改,导致不会对服务器进行 Ajax 调用,并且该函数会直接跳到 'success' 并显示结果来自已填充的成功调用。
更改任何 'postParameters' 都会导致成功 Ajax 调用并刷新数据。
function btnClick(){
//blah blah
getGridData();
}
function getGridData() {
var postParameters =
{
SiteID: "@Model.SiteID",
DateFilterFrom: $("#datepickerFrom").val(),
DateFilterTo: $("#datepickerTo").val(),
CustomerFilter: $("#customers").val()
};
$.ajax({
url: "@Url.Action("SalesForecast_Read", "Planning")",
type: "GET",
contentType: "application/json; charset=utf-8",
data: postParameters,
dataType: "json",
success: function (results) {
createHighlights(results.Highlights);
createGrid(results.Entries);
},
error: function (e) {
alert(e.responseText);
}
});
};
我知道我一定缺少一个重要的 Javascript 概念,但我似乎无法确定它。
谁能帮我指明正确的方向?
您是否尝试过禁用缓存:
$.ajax({
url: "@Url.Action("SalesForecast_Read", "Planning")",
type: "GET",
cache: false,
contentType: "application/json; charset=utf-8",
data: postParameters,
dataType: "json",
success: function (results) {
createHighlights(results.Highlights);
createGrid(results.Entries);
},
error: function (e) {
alert(e.responseText);
}
});
说明
缓存主要通过保存调用的 return 值来尝试保存对服务器的调用。
它使用查询的散列作为键来保存它们,因此如果您进行第二个相同的查询,它将直接 return 缓存中的值,即 return第一次编辑。
如果禁用它,它会向服务器询问每个查询。
尝试在您的 ajax 调用中添加此内容:
$.ajax({
cache: false,
//other options...
});
这将强制召回 ajax 每次。
欲了解更多信息,请查看以下 link :
api.jquery.com/jquery.ajax
您可以将 cache: false 添加到您的 ajax 请求中。
$.ajax({
url: "@Url.Action("SalesForecast_Read", "Planning")",
type: "GET",
contentType: "application/json; charset=utf-8",
data: postParameters,
dataType: "json",
cache:false,
success: function (results) {
createHighlights(results.Highlights);
createGrid(results.Entries);
},
error: function (e) {
alert(e.responseText);
}
});
不过 IE 可能不会听你的。为此,您可以向 POST 参数添加一个字段,在其中以毫秒为单位添加当前时间,因此即使 IE 也不会缓存。
我有一个 Ajax 呼叫是通过按下按钮进行的,returns 我一些数据然后关闭并创建一个网格。第一次调用该函数时,会进行 Ajax 调用,返回数据并显示网格。快乐的时光。 然而,对该函数的任何后续调用,其中 none 的数据参数已更改,导致不会对服务器进行 Ajax 调用,并且该函数会直接跳到 'success' 并显示结果来自已填充的成功调用。
更改任何 'postParameters' 都会导致成功 Ajax 调用并刷新数据。
function btnClick(){
//blah blah
getGridData();
}
function getGridData() {
var postParameters =
{
SiteID: "@Model.SiteID",
DateFilterFrom: $("#datepickerFrom").val(),
DateFilterTo: $("#datepickerTo").val(),
CustomerFilter: $("#customers").val()
};
$.ajax({
url: "@Url.Action("SalesForecast_Read", "Planning")",
type: "GET",
contentType: "application/json; charset=utf-8",
data: postParameters,
dataType: "json",
success: function (results) {
createHighlights(results.Highlights);
createGrid(results.Entries);
},
error: function (e) {
alert(e.responseText);
}
});
};
我知道我一定缺少一个重要的 Javascript 概念,但我似乎无法确定它。 谁能帮我指明正确的方向?
您是否尝试过禁用缓存:
$.ajax({
url: "@Url.Action("SalesForecast_Read", "Planning")",
type: "GET",
cache: false,
contentType: "application/json; charset=utf-8",
data: postParameters,
dataType: "json",
success: function (results) {
createHighlights(results.Highlights);
createGrid(results.Entries);
},
error: function (e) {
alert(e.responseText);
}
});
说明
缓存主要通过保存调用的 return 值来尝试保存对服务器的调用。
它使用查询的散列作为键来保存它们,因此如果您进行第二个相同的查询,它将直接 return 缓存中的值,即 return第一次编辑。
如果禁用它,它会向服务器询问每个查询。
尝试在您的 ajax 调用中添加此内容:
$.ajax({
cache: false,
//other options...
});
这将强制召回 ajax 每次。 欲了解更多信息,请查看以下 link : api.jquery.com/jquery.ajax
您可以将 cache: false 添加到您的 ajax 请求中。
$.ajax({
url: "@Url.Action("SalesForecast_Read", "Planning")",
type: "GET",
contentType: "application/json; charset=utf-8",
data: postParameters,
dataType: "json",
cache:false,
success: function (results) {
createHighlights(results.Highlights);
createGrid(results.Entries);
},
error: function (e) {
alert(e.responseText);
}
});
不过 IE 可能不会听你的。为此,您可以向 POST 参数添加一个字段,在其中以毫秒为单位添加当前时间,因此即使 IE 也不会缓存。