Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > Web программирование > JavaScript, Ajax
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 14.06.2017, 13:56   #1
Ksinov
 
Регистрация: 14.06.2017
Сообщений: 9
По умолчанию Не правильное выполнение скрипта

доброе время суток есть скрипт в нем 3 ajax запроса все они работают нормально но выполняются не по очереди не сверху в низ


Код:
var id;
function getid(Event) {
 
    id = $(Event).attr("id");
 
    $.ajax({//  включаем функцию
        url: "php/getidk.php", // указываем оброботчик
        type: "POST",// метод передачи дааных
        data: ({id: id}),// передача перемных
        dataType: "html",// тип передачи
        success: function (data) {
            $("#optova").html(data);
            $("#id__mess").val(id)
        }
    });
}
 
$(document).ready(function () {
    var index;
    var meseen;
    var dost;
    var in_home;
    var sena;
 
 
    $('#senabut').bind("change keyup input click", function () {
        if (this.value.match(/[^0-9]/g)) {
            this.value = this.value.replace(/[^0-9]/g, '');
        }
    });
    $("#search option[value='1']").attr("selected", "selected");
 
    $("#mess_but").click(function () {
        var eror="1";
        $("#eroor").show();
        $("#eroor").css({
            color: "#ab0009"
        });
        index = $("#search").val();
        if (index == "1") {
            eror = "Выбирите товар или услугу ";
            $("#eroor").text(eror);
            return false;
        }
        meseen = $("#opis").val();
        if (meseen.length < 1) {
            eror = "Напишите что вы ищите";
            $("#eroor").text(eror);
            return false;
        }
        sena = $("#senabut").val();
 
        if (sena.length < 1) {
            eror = "Укажите вашу цену";
            $("#eroor").text(eror);
            return false;
        }
        if (sena == 0) {
            eror = "Укажите вашу цену";
            $("#eroor").text(eror);
            return false;
        }
 
        if (eror=="1"){
            var data = new FormData();
            var error = '';
 
            $.each($('#file')[0].files, function(i, file) {
 
                if(file.name.length < 1) {
                    error = error + ' Файл имеет неправильный размер! ';
                } //Проверка на длину имени
                if(file.size > 1000000) {
                    error = error + ' File ' + file.name + ' is to big.';
                } //Проверка размера файла
                if(file.type != 'image/png' && file.type != 'image/jpg' && !file.type != 'image/gif' && file.type != 'image/jpeg' ) {
                    error = error + 'File* ' + file.name + '* doesnt match png, jpg or gif';
                } //Проверка типа файлов
                data.append('file[]', file);
 
            });
 
            if (error != '') {
                $('#info').html(error);
                return false;
            } else {
 
                $.ajax({
                    url: 'php/upload.php',
                    data: data,
                    cache: false,
                    contentType: false,
                    processData: false,
                    type: 'POST',
                    beforeSend: function() {
 
                    },
                    success: function(data){
                        $('#info').html(data);
                        alert("1")
 
                    }
                });
            }
        }
 
        if ($('#dostav').prop('checked')) {
            dost = $("#dostav").val();
 
        } else {
            dost = "Без доставки ";
        }
        if ($('#price').prop('checked')) {
            in_home = $("#price").val();
 
        } else {
            in_home = "Без выезда";
 
        }
        var valuta = $("#valuta").val();
 
 
        $.ajax({
            url: "php/send_mesen.php",
            type: "POST",
            data: ({index: index, meseen: meseen, sena: sena, dost: dost, in_home: in_home, valuta: valuta}),
            dataType: "html",
            success: function (data) {
                alert("2")
                $("#eroor").text(data);
                if (data == "ok") {
                    $("#eroor").css({
                        color: "#52ab24"
                    });
 
                    $("#eroor").text("Ваша заявка отправлена вам скроро ответят ");
                    function func() {
                        $("#eroor").hide(1000);
 
                    }
 
                    setTimeout(func, 3000);
                    $("#search").prop('selectedIndex', 0);
                    $("#valuta").prop('selectedIndex', 0);
                    $("#opis").val("");
                    $("#senabut").val("");
                }
            }
 
        });
 
        $.ajax({
            url: "php/savemesen.php",
            type: "POST",
            data: ({index: index, meseen: meseen, sena: sena, dost: dost, in_home: in_home, valuta: valuta}),
            dataType: "html",
            success: function (dat) {
                alert(3)
            }
        });
 
 
    });
});
мне обязательно надо чтоб первый ajax запрос выполнялся первый (это там где alert("1")) Прошу подсказать что не так 3 дня борюсь с этим уже

Последний раз редактировалось Аватар; 14.06.2017 в 13:59.
Ksinov вне форума Ответить с цитированием
Старый 14.06.2017, 14:21   #2
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

так это суть ассинхронных вычислений.

если нужно привязать выполнение одного запроса к другому, то, проще всего, цеплять вызов зависимого процесса в тот момент, когда первый процесс выполнился.

например:
Код:
            if (error != '') {
                $('#info').html(error);
                return false;
            } else {
 
                $.ajax({
                    url: 'php/upload.php',
                    data: data,
                    cache: false,
                    contentType: false,
                    processData: false,
                    type: 'POST',
                    beforeSend: function() {
 
                    },
                    success: function(data){
                        $('#info').html(data);
                        alert("1");

                       if ($('#dostav').prop('checked')) {
                            dost = $("#dostav").val();
                 
                        } else {
                            dost = "Без доставки ";
                        }
                        if ($('#price').prop('checked')) {
                            in_home = $("#price").val();
                 
                        } else {
                            in_home = "Без выезда";
                 
                        }
                        var valuta = $("#valuta").val();

                        $.ajax({
                            url: "php/send_mesen.php",
                            type: "POST",
                            data: ({index: index, meseen: meseen, sena: sena, dost: dost, in_home: in_home, valuta: valuta}),
                            dataType: "html",
                            success: function (data) {
                                alert("2")
                                $("#eroor").text(data);
                                if (data == "ok") {
                                    $("#eroor").css({
                                        color: "#52ab24"
                                    });

                                    $.ajax({
                                        url: "php/savemesen.php",
                                        type: "POST",
                                        data: ({index: index, meseen: meseen, sena: sena, dost: dost, in_home: in_home, valuta: valuta}),
                                        dataType: "html",
                                        success: function (dat) {
                                            alert(3)
                                        }
                                    });
                 
                                    $("#eroor").text("Ваша заявка отправлена вам скроро ответят ");
                                    function func() {
                                        $("#eroor").hide(1000);
                 
                                    }
                 
                                    setTimeout(func, 3000);
                                    $("#search").prop('selectedIndex', 0);
                                    $("#valuta").prop('selectedIndex', 0);
                                    $("#opis").val("");
                                    $("#senabut").val("");
                                }
                            }
                 
                        });

 
                    }
                });
            }

p.s. не отслеживал вашу логику, почему три отдельных запроса, что они возвращают и т.д.
просто пример, как вызывать последовательно то, что по сути выполняется ассинхроннно.

p.p.s. неплохо бы ещё повесить обработчик на событие fail, чтобы сообщить пользователю, что запрос не выполнился
(а то мало ли какие могут быть ошибки. связи нет, например. или проблемы с сервером/данными)
Serge_Bliznykov вне форума Ответить с цитированием
Старый 15.06.2017, 07:36   #3
Ksinov
 
Регистрация: 14.06.2017
Сообщений: 9
По умолчанию

спасибо большое за помощь вы мне очень помогли
Ksinov вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Остановить выполнение скрипта max9123 Общие вопросы Delphi 2 02.11.2013 11:59
выполнение скрипта по крону Mortimoro PHP 3 03.09.2012 15:30
Автоматическое выполнение скрипта maksikus PHP 16 04.09.2010 06:13
Не получается правильное выполнение проги (рекурсия) Driver_09 Помощь студентам 0 23.12.2009 19:55
Выполнение скрипта по расписанию Sparky PHP 7 30.10.2009 16:33