BidiBom
@BidiBom
Wild stuff. Africa

Как правильно вызывать запросы?

Здравствуйте. Суть такая: Есть три php-скрипта, вносить изменения в скрипты нельзя. Необходимо на Jquery вызывать их Ajax'ом. Сначала получить список городов с помощью первого скрипта, потом передавая id города в скрипт получения улиц получить id всех улиц, потом передавая в третий скрипт id города и id улицы получить список домов.
Делаю это так:
function getall(){
    console.log("start");
    $.ajax({
        type: "POST",
        url: "/getCity.php",
        dataType: "json",
        success: function (data) {
            $.each(data, function (i, item) {
                setTimeout(function() {
                    console.log("Город: " + item.name);
                    $.ajax({
                        type: "POST",
                        data: "cityid=" + item.cityID,
                        url: "/getStreet.php",
                        dataType: "json",
                        success: function (data) {
                            $.each(data.response.items, function (a, item1) {
                                setTimeout(function() {
                                    console.log("Улица: " + item1.title)
                                    $.post("drs.php", {cityid: item.cityID, streetid: item1.id},
                                        function (data) {
                                            console.log("Дом: ", +data);
                                        }
                                    );
                                }, 3000);
                            });
                        }
                    });
                }, 30000);
            });
        }
    });
    console.log("Finish");
}


Список домов не возвращается. Что я не так делаю?
  • Вопрос задан
  • 196 просмотров
Пригласить эксперта
Ответы на вопрос 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Включайте в браузере консоль разработчика и смотрите что уходит на сервер и что оттуда возвращается.
Ответ написан
Комментировать
akubintsev
@akubintsev
Опытный backend разработчик
  1. Познакомьтесь с Promise/Deferred, чтобы не писать такую макаронину из колбеков
  2. А зачем setTimeout да еще и на 30 секунд во внешней итерации?
Ответ написан
Barada
@Barada
Что я не так делаю? - Кривой код пишете.

Начать можно с Deferred как посоветовал akubintsev . Success колбек в скором времени не будет поддерживаться. Консоль разработчика + fiddler
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы