使用JavaScript显示消息是成功:数据ID为空
问题描述:
我有一个ajax函数,它从模型中获取json数据并将其显示在行中。该函数工作正常,但我想添加一条消息,如果没有数据返回。我正在尝试不工作,调试显示“accts”未定义?使用JavaScript显示消息是成功:数据ID为空
任何帮助将是伟大的!
的Javascript:
//Submit form
$(function submit() {
$('form').submit(function (e) {
e.preventDefault();
$("#searchResults").show();
$.ajax({
url: 'Home/TAPost',
data: $('form').serialize(),
dataType: "json",
type: 'POST',
success: function (accts) {
if (accts.success = false) {
$("#Error").text('No Accounts were found for the information provided.');
}
else {
$.each(accts, function (index, acct) {
$("#rows").append('<tr><td>' + acct.CustomerName + '</td><td>' + " " + acct.SSN + '</td><td>' + " " + acct.FHBOATAcctNumber + '</td><td>'
+ " " + acct.OriginalAcctNumber + '</td><td>' + " " + acct.ProductType + '</td></tr>');
});
}
}
});
return false;
});
});
答
你accts对象不包含一个成功的属性。如果你点击那行代码意味着你的请求成功了。您必须测试您是否收到来自服务器的任何数据。
这是你如何能做到这
success: function (accts) {
if (!accts || ($.isArray(accts) && accts.lenght === 0) || $.isEmptyObject(accts)) {
$("#Error").text('No Accounts were found for the information provided.');
}
第一次测试,如果你有那么你accts的值对象,如果你使用的是阵列将数据发送测试它的lenght知道如果它包含的元素和最后,如果您在对象测试中发送数据,如果它具有数据的任何属性。
{编辑}
你可以发送空数据成功响应网络。这意味着“您的请求已成功,但我们没有结果向您显示”,并且在“您的请求不符合法定形式”或“您无权提出此请求”等不同情况时发生错误。
虽然你可以使用这个网页,但网页很灵活,但使用错误来表示“无结果”被很多糟糕的设计所考虑。失败的请求通常与它的状态码相关联,并且已经有一个状态码来表示没有数据,204或“无内容”。改为使用它。
+0
这正是我所需要的!谢谢! –
你将不得不在执行错误回调.. – Rayon
这很自然。如果*没有返回数据*,那么'accts' **是** * undefined *(此外,它是一个“成功”回调 - 意味着* something *应该被返回)。如果您想在连接失败时执行操作,请使用'error'回调 –
@ArturFilipiak - 即使返回数据,它也会显示错误? –