How to put a loader inside a for loop that calls JSON

How to put a loader inside a for loop that calls JSON

I do a Json call in a for loop and at every cycle it inserts a record to a database. Everything works good but sometimes it would just skip the for loop and not insert any record even though in the DOM I can see all the selected items that needed to be added to a database. My question is there a way  I can trap such issue? I"m thinking putting a wait loader would not allow user to submit the form until it completes all cycle. How to do that? or is there a more efficient method to call JSON instead of looping it everytime. Please advise
  1.  function TaskStepsClk(lnk) {
  2.         var TaskID, TicketID, LoginName, url, QueueNameID,TaskNameID

  3.         <% If Not sTaskNameID = Nothing Then%>
  4.             TaskNameID =<%=sTaskNameID%>;
  5.         <%Else%>
  6.             TaskNameID = 0;
  7.         <%End If%>
  8.      
  9.         $( "#TaskStepsModal" ).dialog({
  10.             resizable: false,
  11.             height:450,
  12.             width:700,
  13.             modal: true,
  14.             buttons: {
  15.                 Cancel: function() {
  16.                     $( this ).dialog( "close" );
  17.                 },
  18.                 "Update": function() {
  19.                     var n = $("#grdTaskSteps").find("tr").length;
  20.                     var obj = {}; 
  21.                     obj.TaskNameID = TaskNameID;
  22.        
  23.                     $.ajax({
  24.                         type: "Post",
  25.                         url: "AdmTasks.aspx/DeleteSteps",
  26.                         data: JSON.stringify(obj),
  27.                         contentType: "application/json; charset=utf-8",
  28.                         dataType: "json",
  29.                         success: function (r) {
  30.                             //alert("Deleted ");
  31.                             //alert(r.d);
  32.                         },
  33.                         error: function (err) {
  34.                             //alert(err);
  35.                             alert(err.d);
  36.                         }
  37.                     })
  38.                     obj = {}; 
  39.                     if (n > 1)
  40.                     {
  41.                         for (var i = 1; i < n; i++) {
  42.                             obj.IsRequired = $("#grdTaskSteps").find("tr").eq(i).find('td:eq(0) input').is(':checked');
  43.                             obj.StepName = $("#grdTaskSteps").find("tr").eq(i).find("td").eq(1).text();
  44.                             obj.StepOrder = $("#grdTaskSteps").find("tr").eq(i).find('td:eq(2) input[type="hidden"]').val();
  45.                             obj.StepNameID=$("#grdTaskSteps").find("tr").eq(i).find('td:eq(1) input[type="hidden"]').val();
  46.                             obj.TaskNameID = TaskNameID;
  47.                     
  48.                             //alert("CHECKBOX-REQUIRED" + obj.IsRequired)
  49.                             //alert("StepName" +  obj.StepName)
  50.                            // alert("TASKID" +  obj.TaskNameID)
  51.                             //alert("StepOrder" + obj.StepOrder)
  52.                             //alert("StepNameID" + obj.StepNameID)

  53.                             $.ajax({
  54.                                 type: "Post",
  55.                                 url: "AdmTasks.aspx/AddSteps",
  56.                                 data: JSON.stringify(obj),
  57.                                 contentType: "application/json; charset=utf-8",
  58.                                 dataType: "json",
  59.                                 success: function (r) {
  60.                                     //alert("Success");
  61.                                     //alert(r.d);
  62.                                 },
  63.                                 error: function (err) {
  64.                                     //alert("FAIL");
  65.                                     alert(err.d);
  66.                                 }
  67.                             })
  68.                         }
  69.                     }
  70.                     else{
  71.                         alert("No steps assigned")
  72.                     }

  73.                     $( this ).dialog( "close" );
  74.                 }
  75.             }
  76.         });

  77.         $("#TaskStepsModal").siblings('div.ui-dialog-titlebar').remove();
  78.         $("#TaskStepsModal").dialog("open");
  79.     }