Как в запросе AJAX делать подзапрос?

Есть вывод заказов. Для каждого заказа вывожу список файлов с помощью подзапроса.

Сервер выводит список заказов, но файлы не выводит.

Что получаю от сервера(пример): {"files":[{"name_file":"559c9230c3724.rar"}]}

Код самих запросов:

function getOrdersPrint() {
    $.ajax({
        type: "POST",
        data: {operation: 'getordersprint'},
        url: "manager.php",
        dataType: "json",
        success: function (json) {
            $('#managerTableOrderPrint').empty();

            $.each(json.ordersprint, function () {

                var id = this['id'];
                var filesorder = '';

                $.ajax({
                    type: "POST",
                    data: {operation: 'getfiles', id_order: id, type: 'print'},
                    url: "manager.php",
                    dataType: "json",
                    success: function (json) {

                        $.each(json.files, function () {

                            filesorder =+ '<a href="/upload/' + this['name_file'] + '" download="">' + this['name_file'] + '</a><br>';
                        });
                    }
                });

                var info = '<tr><td class="orderPrintSelect"><input type="checkbox" name="selectOrderPrint" value="' + this['id'] + '">
</td><td class="orderPrintClientName">' + this['client_name'] + '</td><td class="orderPrintDate">' + this['date'] + '</td>
<td class="orderPrintTypeProduct">' + this['type_product'] + '</td><td class="orderPrintTirag">' + this['tirag'] + '</td>
<td class="orderPrintSize">' + this['size'] + '</td><td class="orderPrintPaper">' + this['paper'] + '</td>
<td class="orderPrintTypePrint">' + this['type_print'] + '</td><td class="orderPrintPrice">' + this['price'] + '</td>
<td class="orderPrintMaketFile">' + filesorder + '</td></tr>';
                $('#managerTableOrderPrint').append(info);

            });
        }
    });
}
  • Вопрос задан
  • 254 просмотра
Пригласить эксперта
Ответы на вопрос 2
alexey-m-ukolov
@alexey-m-ukolov Куратор тега JavaScript
Вам нужно прочитать про то, что ajax-запросы выполняются асинхронно.
В вашем случае, на момент формирования переменной info ни один запрос еще скорее всего не выполнился.
Конкретно в вашем случае есть два пути:
1. Плохой: Сделать запросы синхронными
2. Великолепный: Использовать промисы, они именно для таких вещей и предназначены.

Вот пример, скорее всего в нем есть какие-то ошибки, поскольку без бэкенда его сложно дебажить и я совсем этим не занимался, но, надеюсь, вы разберетесь.
P.S. Я упростил ваш html и не разбирался с this, который там используется.
Ответ написан
Feaxer
@Feaxer
Программист-фрилансер
Я бы лучше вынес всю эту логику на сервер и доставал одним запросом
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы