如何使用jQuery AJAX避免重复请求

时间:2015-02-23 10:16:05

标签: jquery ajax jquery-datatables

这里我对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);
        }       

    });
}

1 个答案:

答案 0 :(得分:1)

无法理解为什么你需要为同一件事调用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();
    });
}