如何使用 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();
    });
}