2017-05-16 2 views
-1

に古い/前のデータを送信します。 私は別の要求送信した場合:jQueryのAjaxのは、私がJsonInputまずこのJSON文字列を送信すると言うましょポスト

{ 
"JobNumber": ["208-01"], 
"Location": ["002365"], 
"HostName": "TestHOST", 
"WoNumber": "4268-6" 
} 

最初に要求した後、第2の要求が送られますが。以前のリクエストをクリア/破棄/空にするには、最初のリクエストから2番目のリクエストにループするように見えます。私は同じ結果をsessionStorage.clear()を使って試してみました。

$('#WorkOrders').on('change', function() { 

    var WoValue = this.value; 

    //Fade Out Section 
    $('#topTable').fadeOut("slow"); 


    var Url = "/Shipping/api/WorkOrder/" + WoValue.substring(0, 6) 


    $.getJSON(Url, function (data) { 
     if (data.length === 0) { 

      // New Method for WO info //4140-8 
      $('.modal-body').empty(); 
      $('.modal-body').append("<p> No Data for " + WoValue + "</p>"); 
      $('#Modal').modal('show') 

     } else { 

      popHeader(data, WoValue); 

      loadDataTable(WoValue); 
     } 

    }); 
}); 

popHeader機能

function popHeader(data, WoValue) { 

    //Empty Header Contents 
    $("#WoHeader").delay(2000).empty(); 
    $("#WoDetailLeft").delay(2000).empty(); 
    $("#WoDetailRight").delay(2000).empty(); 

    //$("#WoDetailReturn").find("tr:gt(0)").remove(); 
    $("#WoHeader").append("<h1>" + data[0].Name + "</h1>"); 
    $("#WoHeader").append("<h3>Work Order: " + WoValue + "</h3>"); 
    $("#WoHeader").append("<h3>Job: " + data[0].Job + "</h3>"); 
    $("#WoHeader").append("<h3>Job Date: " + data[0].JobDate + "</h3>"); 
    if (data[0].Carrier === "FX") { 
     var Carrier = "FedEx"; 
    } else if (data[0].Carrier === "UP") { 
     var Carrier = "UPS"; 
    } else { 
     var Carrier = "N/A"; 
    } 
    $("#WoHeader").append("<h3>Carrier: " + Carrier + "</h3>"); 
    // $("#WoDetailLeft").append("<h5>Job Name: " + data[0].Name + "</h5>"); 
    $("#WoDetailLeft").append("<h5>Shipped To Client: " + data[0].ShippedToClient + "</h5>"); 
    $("#WoDetailLeft").append("<h5>Estimated Arrival: " + data[0].EstimatedArrivalDate + "</h5>"); 
    // $("#WoDetailRight").append("<h5>Job Date: " + data[0].JobDate + "</h5>"); 
    $("#WoDetailRight").append("<h5>Client Ship Return: " + data[0].ClientReturnDate + "</h5>"); 
    $("#WoDetailRight").append("<h5>Estimate Return " + data[0].EstimatedReturnDate + "</h5>"); 

    //Clear Table 


    $("#WoDetail").find("tr:gt(0)").remove(); 
} 

loadDataTable機能:

function loadDataTable(WoValue) { 
    var events = $('#events'); 
    var rows_selected = []; 

    var table = $('#WoDetail').DataTable({ 
     "destroy": true, 

     dom: 'Bfrtip', 
     buttons: [ 
       'copy', 'excel' 
     ], 
     ajax: { 
      url: "/Shipping/api/WorkOrder/" + WoValue.substring(0, 6), 
      dataSrc: "" 
     }, 
     'columnDefs': [{ 
      'targets': 9, 
      'searchable': false, 
      'orderable': false, 
      'width': '1%', 
      'className': 'dt-body-center', 
      'render': function (data, type, full, meta) { 
       return '<input type="checkbox">'; 
      } 
     }], 
     columns: [ 
      { "data": "Location" }, 
      { 
       "data": "TrackingNumberOut", 
       "render": function (data, type, full, meta) { 
        return '<a href="https://www.fedex.com/apps/fedextrack/?tracknumbers=' + data + '" target="_blank">' + data + '</a>'; 
       } 
      }, 
      { "data": "StatusOut" }, 
      { "data": "ShipOrReturnOut" }, 
      { 
       "data": null, 
       "defaultContent": 
        'SYSTEM' 
      }, 
      { 
       "data": "TrackingNumberIn", 
       "render": function (data, type, full, meta) { 
        return '<a href="https://www.fedex.com/apps/fedextrack/?tracknumbers=' + data + '" target="_blank">' + data + '</a>'; 
       } 
      }, 
      { "data": "StatusIn" }, 
      { "data": "ShipOrReturnIn" }, 
      { "data": "strStkColorDesc" } 

     ], 
     'order': [[1, 'asc']], 
     'rowCallback': function (row, data, dataIndex) { 
      // Get row ID 
      var rowId = data[0]; 
      var JobId = data[0]; 

      // If row ID is in the list of selected row IDs 
      if ($.inArray(rowId, rows_selected) !== -1) { 
       $(row).find('input[type="checkbox"]').prop('checked', true); 
       $(row).addClass('selected'); 
      } 
     } 

    }); 
    $('#WoDetail').removeClass("hidden"); 
    $('#WoDetail').addClass("display") 

    $('#topTable').fadeIn("slow"); 
    $('#btnSubmit').css('margin-top', '10px'); 
    $('#btnSubmit').removeClass("hidden"); 

    $('#WoDetail tbody').on('click', 'input[type="checkbox"]', function (e) { 
     var $row = $(this).closest('tr'); 

     // Get row data 
     var dataRow = table.row($row).data(); 

     // Get Location # 

     var rowId = dataRow.Job + ":" + dataRow.Location; 


     // Determine whether row ID is in the list of selected row IDs 
     var index = $.inArray(rowId, rows_selected); 


     // If checkbox is checked and row ID is not in list of selected row IDs 
     if (this.checked && index === -1) { 
      rows_selected.push(rowId); 

      // Otherwise, if checkbox is not checked and row ID is in list of selected row IDs 
     } else if (!this.checked && index !== -1) { 
      rows_selected.splice(index, 1); 
     } 

     if (this.checked) { 
      $row.addClass('selected'); 
     } else { 
      $row.removeClass('selected'); 
     } 

     // Update state of "Select all" control 
     updateDataTableSelectAllCtrl(table); 

     // Prevent click event from propagating to parent 
     e.stopPropagation(); 
    }); 

    // Handle click on table cells with checkboxes 
    $('#WoDetail').on('click', 'tbody td, thead th:first-child', function (e) { 
     $(this).parent().find('input[type="checkbox"]').trigger('click'); 
    }); 

    // Handle click on "Select all" control 
    $('thead input[name="select_all"]', table.table().container()).on('click', function (e) { 
     if (this.checked) { 
      $('#WoDetail tbody input[type="checkbox"]:not(:checked)').trigger('click'); 
     } else { 
      $('#WoDetail tbody input[type="checkbox"]:checked').trigger('click'); 
     } 

     // Prevent click event from propagating to parent 
     e.stopPropagation(); 
    }); 

    // Handle table draw event 
    table.on('draw', function() { 
     // Update state of "Select all" control 
     updateDataTableSelectAllCtrl(table); 
    }); 

    $('.modal-body').empty(); 
    $('.modal-body').append('<p> The Following Jobs & Locations have been Scheduled </p>'); 

    $('#btnSubmit').on('click', function (e) { 
     var form = this; 

     if (rows_selected.length === 0) { 
      $('.modal-body-err').empty(); 
      $('.modal-body-err').append('</p>Please make a selection</p>'); 
      $('#Modal-err').modal('show'); 
      return; 
     } 

     var str; 
     var res; 
     var final = []; 
     var JobNumbers = []; 
     var Locations = []; 

     // Iterate over all selected checkboxes 
     for (var i = 0; i <= (rows_selected.length - 1) ; i++) { 

      str = rows_selected[i]; 
      res = str.split(":"); 
      JobNumbers.push(res[0]); 
      Locations.push(res[1]); 
      final.push(res); 

     } 

     var hostName = "@System.Net.Dns.GetHostEntry(Request.ServerVariables["remote_addr"]).HostName" 
     var netAddress = "@ViewContext.HttpContext.Request.UserHostName" 
     console.log(hostName); 
     console.log(netAddress); 

     var woNumber = WoValue.substring(0, 6); 

     var JsonInput = JSON.stringify({ 
      JobNumber: JobNumbers, 
      Location: Locations, 
      HostName: hostName, 
      WoNumber: woNumber 
     }); 


     for (var i = 0; i < Locations.length; i++) { 

      $('#PickupDT tbody').append('<tr><td>' + JobNumbers[0] + '</td><td>' + Locations[i] + '</td></tr>'); 

     } 
     $('#pickupModal').modal('show'); 
     $('#pickupOk').on('click', function() { 
      $("#pickupOk").fadeOut(); 

      $.ajax({ 
       type: "POST", 
       url: "/Shipping/SavePickups", 
       contentType: 'application/json', 
       dataType: "json", 
       data: JsonInput, 

       success: handleData 

      }); 

      function handleData(data) { 
       $("#pickupOk").delay(6000).fadeIn(); 
       if (data.Success == "True") { 

        $('.pickupModal-body').append('<h2>' + data.Message + '</h2>'); 
        $('#WoDetail tbody input[type="checkbox"]:checked').trigger('click'); 

        setTimeout(function() { 
         sessionStorage.clear(); 
         $('#PickupClose').trigger('click'); 
         $(".pickupModal-body").find("tr:gt(0)").remove(); 
         $(".pickupModal-body").children("h2").remove(); 

        }, 2000); 
       } 
       else { 
        $('.pickupModal-body').append('<hr/><br/><p> Pickups Failed To Schedule</p>') 
        $('#pickupModal').modal('show'); 
       } 
      } 

     }); 
     $('#PickupClose').on('click', function() { 
      $(".pickupModal-body").find("tr:gt(0)").remove(); 

     }); 

    }); 

} // END OF loadDataTable Function 
+0

あなたがイベントを複数回結合されているような音....しかし、あなたはそれを証明または反証するのに十分なコードを提供していません。 –

+1

注:適切なインデントは、読み取り可能なコードにつながります。読み取り可能なコードにより、デバッグが容易になります。 – Santi

+0

@KevinB私は完全にコードを提出しています。 –

答えて

0

これは$('#pickupOk').on('click', function() {})上の結合問題でした。

私は、クリック機能が継続的に最後の機能に追加され、このバインド解除せずに停止しないでしょう$('#pickupOk').unbind('click');

を使用。

http://api.jquery.com/unbind/

関連する問題