JavaScript:
var numbers = [0, 1, 3, 5]; for (let k = 0; k < numbers.length; k++) { let x = numbers[k] l = $.ajax({ type: 'GET', url: 'body.php', data: {'x': x}, contentType: 'application/json; charset=utf-8', }).then(function(res) { $("#products").append(res); }) }php:
<?php session_start(); $x = $_GET['x']; ?> <h5><?php echo $produkt;?></h5>Y lo agrega cada vez en un orden diferente, por ejemplo, 0 3 1 5 o 1 5 0 3, etc. pero cuando agrego a javascript alert(), siempre va en el orden correcto.
Porque es asíncrono. Puede crear una matriz de todas las promesas y luego usar Promise.all para ordenarlas:
// Just a fake jquery ajax that returns promises let $ = { ajax(props) { return new Promise((resolve) => setTimeout(() => resolve(`<h5>${props.data.x}</h5>`), Math.floor(Math.random() * 500))); } } var numbers = [0, 1, 3, 5]; const p = numbers.map((x) => { return $.ajax({ type: 'GET', url: 'body.php', data: {'x': x}, contentType: 'application/json; charset=utf-8', }) }); Promise.all(p).then((responses) => { responses.forEach((response) => { document.getElementById('products').innerHTML += response; }); }); <div id="products" />