Функция успеха не работает на основе отправки - PullRequest
0 голосов
/ 03 декабря 2018

У меня есть вызов Ajax, который работает, но функция успеха - нет.У меня есть несколько дат, которые я ввожу, после нажатия кнопки отправки должно появиться небольшое всплывающее окно с предупреждением «Данные сохранены в БД».Данные сохраняются в БД, однако я не получаю всплывающее окно с предупреждением.

$("#btnSubmit").bind("click", function () {
                createUpdateArrays();
                var url = "/Sample/Selection";
                $.ajax({
                    type: "GET",
                    url: url,
                    data: { ids: ids, dates: dates },
                    success: function (success) {
                        if (success === true) {
                            alert("Success");
                        }
                        else {
                            alert("error");
                        }
                    }
                });

                ids = "";
                dates = "";
            });
            function createUpdateArrays() {
                var i = 0;
                $('input.remedy-id:checkbox').each(function () {
                    if ($(this).is(':checked')) {
                        var rid = $(this).attr("id");
                        $('.planned-date').each(function () {
                            var did = $(this).attr("id");
                            if (did === rid) {
                                var date = $(this).val();
                                ids += rid + ",";
                                dates += date + ",";
                            }
                        });
                    };
                });
            };

Я не могу понять причину этого ..

1 Ответ

0 голосов
/ 03 декабря 2018

РЕДАКТИРОВАТЬ: Перед выполнением НИЧЕГО остальное убедитесь, что ваш сервер действительно возвращает ответ для начала.

Ваша функция успеха ожидает, что сервер вернет логическое значение,но это, вероятно, не то, что происходит.Если вы возвращаете простую строку «success» с сервера, тогда сравнение должно быть if (success === "success").Это полностью зависит от того, что ваш сервер возвращает в ответ.

Возможно, ваш сервер возвращает код состояния 2xx.В любом случае вы можете использовать обратные вызовы кода состояния jQuery:

$.ajax({
                type: "GET",
                url: url,
                data: { ids: ids, dates: dates },
                statusCode: {
                  200: function(){alert("Success!")},
                  201: function(){alert("Success!")}
                }
            });

И если вы не хотите этого делать и просто хотите использовать обратный вызов success, попробуйте что-то вроде этого:

                    success: function (success) {
                        if (success || (success.length && success.length == 0)) { // this will almost definitely evaluate to true
                            console.log(success) // Do this to see what is actually being returned. I guarantee it isn't a boolean value.
                            alert("Success");
                        }
                        else {
                            alert("error");
                        }
                    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...