2017-09-27 12 views
1
function table_insert(lease_ids){     
    var lease_id=lease_ids+1; 
    var table = document.getElementById('table_data123'), 
    rows = table.getElementsByTagName('tr'), 
    i, j, cells, customerId; 

    for (i = 0, j = rows.length; i < j; ++i) { 
    cells = rows[i].getElementsByTagName('td'); 
    if (!cells.length) { 
     continue; 
    } 
    sno = cells[0].innerHTML; 
    start_date = cells[1].innerHTML; 
    end_date = cells[2].innerHTML; 
    amount = cells[3].innerHTML; 

    $.ajax({ 
     type: "post", 
     url: "insert_table_data.php", 
     data: { 
     sno: sno, 
     start_date: start_date, 
     end_date: end_date, 
     amount: amount, 
     lease_id: lease_id, 
     calendar_type: calendar_type 
     }, 
     success: function(data){} 
    }); 
    alert('success'); 
    } 
} 

ここでは、データベースにデータを投稿すると、常に複数のアラートボックスに成功メッセージが表示されます。ループが10個の値をとると、警告ボックスが10個表示されます。しかし、警報ボックスは1つだけ必要です。スノーデータをデータベースに昇順で挿入するにはどうしたらいいですか?

答えて

2

コードを少し書き直してから、ajax呼び出しを配列に入れてみました。この配列は、Promise.all()に渡される何かを実行するために使用することができ、すべてのAJAX呼び出しが終了した後:

function table_insert(lease_ids) { 
    var ajaxCalls = []; 
    document.querySelectorAll('#table_data123 tr').forEach(row => { 
    var cells = row.getElementsByTagName('td'); 
    if (cells.length) { 
     ajaxCalls.push(
     $.post("insert_table_data.php", { 
      sno: cells[0].innerHTML, 
      start_date: cells[1].innerHTML, 
      end_date: cells[2].innerHTML, 
      amount: cells[3].innerHTML, 
      lease_id: lease_ids + 1, 
      calendar_type: calendar_type 
     })); 
    } 
    }); // end forEach() 
    Promise.all(ajaxCalls).then(() => { 
    alert("success"); 
    }); 
} 
+0

は非常に多くのクリスありがとうございます、しかし、あなたは私をからかっている私はすでに別の1 – Akhil

+0

@Akhilを使用しましたか...?ループの最後の反復で成功を警告することが、あなたが探していた解決策ですか?すべてのAJAXの結果が実際に終了した後に、この方法を教えてくれました.... * smh * –

関連する問題