如何使用 jQuery AJAX 避免重复请求
How to avoid duplicate rquests with jQuery AJAX
这里我有一个 AJAX 的要求,我给了一个 url(UpdateURL)
url param.
如果成功的话,我会调用一个 dataTable(called loadGrid()),
这里我需要调用相同的 url(UpdateURL)
到 loadGrid()
,同时我调用了两次相同的 url(UpdateURL)
,它会导致重复请求。
任何人都可以帮助我如何使用 url(UpdateURL)
一次并避免重复请求。对困惑感到抱歉。
这是我的代码,
$("#UploadButton").click(function(){
$("#idLoading").show();
var UpdateURL="some url";
$.ajax({
type: "post",
url: UpdateURL, // calling first time
dataType: "json",
cache : false,
success: function(response) {
loadGrid(UpdateURL); // calling second time
$("#idLoading").hide();
},
error: function (xhr, status) {
$("#idLoading").show();
timeout_trigger();
}
});
});
function loadGrid(url){
$.getJSON(url,function (output)
{
try
{
var pdlJsonObj = output.aaData;
var tdata = $("#IdDatatble").dataTable({
"aaData": pdlJsonObj,
"bDestroy": true,
"sPaginationType": "full_numbers",
"aaSorting": [],
"fnCreatedRow": function (nRow, aData, iDisplayIndex, iDisplayIndexFull)
{
$(nRow).attr('id', iDisplayIndex);
},
"fnInitComplete": function ()
{
$("#IdDatatble tbody tr:eq(0)").find('td').each(function () { });
}
});
}
catch(err)
{
alert(err.message);
}
});
}
不明白为什么你需要为同一件事调用 ajax 和 getJson,试试这个:
$("#UploadButton").click(function(){
var UpdateURL="some url";
$("#idLoading").show();
loadGrid(UpdateURL);
});
function loadGrid(url){
$.getJSON(url,function (output)
{
try
{
var pdlJsonObj = output.aaData;
var tdata = $("#IdDatatble").dataTable({
"aaData": pdlJsonObj,
"bDestroy": true,
"sPaginationType": "full_numbers",
"aaSorting": [],
"fnCreatedRow": function (nRow, aData, iDisplayIndex, iDisplayIndexFull)
{
$(nRow).attr('id', iDisplayIndex);
},
"fnInitComplete": function ()
{
$("#IdDatatble tbody tr:eq(0)").find('td').each(function () { });
}
});
}
catch(err)
{
alert(err.message);
}
}).done(function( json ) {
$("#idLoading").hide();
})
.fail(function( jqxhr, textStatus, error ) {
$("#idLoading").show();
timeout_trigger();
});
}
这里我有一个 AJAX 的要求,我给了一个 url(UpdateURL)
url param.
如果成功的话,我会调用一个 dataTable(called loadGrid()),
这里我需要调用相同的 url(UpdateURL)
到 loadGrid()
,同时我调用了两次相同的 url(UpdateURL)
,它会导致重复请求。
任何人都可以帮助我如何使用 url(UpdateURL)
一次并避免重复请求。对困惑感到抱歉。
这是我的代码,
$("#UploadButton").click(function(){
$("#idLoading").show();
var UpdateURL="some url";
$.ajax({
type: "post",
url: UpdateURL, // calling first time
dataType: "json",
cache : false,
success: function(response) {
loadGrid(UpdateURL); // calling second time
$("#idLoading").hide();
},
error: function (xhr, status) {
$("#idLoading").show();
timeout_trigger();
}
});
});
function loadGrid(url){
$.getJSON(url,function (output)
{
try
{
var pdlJsonObj = output.aaData;
var tdata = $("#IdDatatble").dataTable({
"aaData": pdlJsonObj,
"bDestroy": true,
"sPaginationType": "full_numbers",
"aaSorting": [],
"fnCreatedRow": function (nRow, aData, iDisplayIndex, iDisplayIndexFull)
{
$(nRow).attr('id', iDisplayIndex);
},
"fnInitComplete": function ()
{
$("#IdDatatble tbody tr:eq(0)").find('td').each(function () { });
}
});
}
catch(err)
{
alert(err.message);
}
});
}
不明白为什么你需要为同一件事调用 ajax 和 getJson,试试这个:
$("#UploadButton").click(function(){
var UpdateURL="some url";
$("#idLoading").show();
loadGrid(UpdateURL);
});
function loadGrid(url){
$.getJSON(url,function (output)
{
try
{
var pdlJsonObj = output.aaData;
var tdata = $("#IdDatatble").dataTable({
"aaData": pdlJsonObj,
"bDestroy": true,
"sPaginationType": "full_numbers",
"aaSorting": [],
"fnCreatedRow": function (nRow, aData, iDisplayIndex, iDisplayIndexFull)
{
$(nRow).attr('id', iDisplayIndex);
},
"fnInitComplete": function ()
{
$("#IdDatatble tbody tr:eq(0)").find('td').each(function () { });
}
});
}
catch(err)
{
alert(err.message);
}
}).done(function( json ) {
$("#idLoading").hide();
})
.fail(function( jqxhr, textStatus, error ) {
$("#idLoading").show();
timeout_trigger();
});
}