ajax сообщение для цикла - PullRequest
3 голосов
/ 04 марта 2020

Я использую ajax post для публикации текущего значения i на другой странице php в l oop и получения того же значения i на этой странице php. Но, я значение увеличивается на 1, прежде чем опубликовано. Эта строка console.log(data); выводит 2,..,100,1. Я не понимаю, почему так произошло. Ожидаемый результат - 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 ]

1 голос
/ 04 марта 2020

используйте вызов ajax внутри новой функции, затем вызовите функцию в l oop.

Также добавьте asyn c: false в ваш запрос ajax. Он будет отправлять запрос ajax синхронно, ожидая, пока предыдущий запрос завершится sh, а затем отправив следующий запрос.

Что-то вроде

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);

        }
    })
}
0 голосов
/ 04 марта 2020

Попробуйте.

Закрытие

Это называется закрытием внутри l oop.

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

    })(i);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...