使用JavaScript显示消息是成功:数据ID为空

使用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; 
    }); 
}); 
+0

你将不得不在执行错误回调.. – Rayon

+0

这很自然。如果*没有返回数据*,那么'accts' **是** * undefined *(此外,它是一个“成功”回调 - 意味着* something *应该被返回)。如果您想在连接失败时执行操作,请使用'error'回调 –

+0

@ArturFilipiak - 即使返回数据,它也会显示错误? –

你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

这正是我所需要的!谢谢! –