Форум программистов  
Контакты: о проблемах с регистрацией, почтой и по другим вопросам пишите сюда - alarforum@yandex.ru, проверяйте папку спам! Обязательно пройдите активизацию e-mail.

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

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

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

доброе время суток есть скрипт в нем 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 в 14:59.
Ksinov вне форума   Ответить с цитированием
Старый 14.06.2017, 15:21   #2
Serge_Bliznykov
МегаМодератор
СуперМодератор
 
Регистрация: 09.01.2008
Сообщений: 22,379
Репутация: 5033
По умолчанию

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

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

например:
Код:

            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, 08:36   #3
Ksinov
 
Регистрация: 14.06.2017
Сообщений: 7
Репутация: 10
По умолчанию

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



Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Остановить выполнение скрипта 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 20:55
Выполнение скрипта по расписанию Sparky PHP 7 30.10.2009 17:33




23:47.


Powered by vBulletin® Version 3.8.8 Beta 2
Copyright ©2000 - 2017, Jelsoft Enterprises Ltd.

купить трафик


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

RusProfile.ru


Справочник российских юридических лиц и организаций.
Проекты отопления, пеллетные котлы, бойлеры, радиаторы
интернет магазин respective.ru