weixin_33674976 2020-03-04 06:55 采纳率: 0%
浏览 53

Ajax发布for循环

I use ajax post to post current i value to other php page in loop and get the same i value from that php page. But, i value incremented by 1 before posted. This line console.log(data); output 2,..,100,1 .I don't understand why it happen so. The expected output is 1,..,100.

for (i = 1; i <= 100; i++) {
  $.ajax({
    type: 'POST',
    url: '2.php',   
    data: { 'id': i }   ,
    success: function(data) {                                                                           
    //console.log(data);
    }
  });
}

2.php

<?php 
echo $_POST['id'];
?>
  • 写回答

2条回答 默认 最新

  • lrony* 2020-03-04 07:03
    关注

    use the ajax call inside a new function then invoke the function into the loop.

    Also add async:false in you ajax request. It will send the ajax request synchronously waiting for the previous request to finish and then sending the next request.

    Something like

    function func() {
        for (let i = 1; i <= 100; i++) {
            makeRequest(i);
        }
    }
    
    function makeRequest(i) {
        $.ajax({
            type: 'POST',
            url: '2.php',
            data: {
                'id': i
            },
            async:false,
            success: function(data) {
                //console.log(data);
    
            }
        })
    }
    
    评论

报告相同问题?