成功功能基于提交不起作用

时间:2018-12-03 19:45:43

标签: javascript jquery ajax

我有一个正在运行的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 :(得分:1)

编辑:在执行其他任何操作之前,请确保您的服务器实际上是从一开始就返回响应。

您的成功函数期望服务器返回一个布尔值,但这可能不是正在发生的情况。如果要从服务器返回简单的字符串“成功”,则比较应该为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");
                        }
                    }