我有一个正在运行的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 + ",";
}
});
};
});
};
我似乎无法理解其背后的原因。
答案 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");
}
}