AngularJS:检查对象为null时,返回错误的消息

时间:2016-10-21 20:46:58

标签: javascript angularjs

我在根据服务调用的响应更新记录时添加了几个警报。

当我检查响应中是否有任何数据时:

if (response.data === null)

此部分似乎不受尊重,并且显示记录更新的警报成功,如果您查看屏幕截图,则response.data为空。

我不确定为什么简单的if不起作用,或者我正在查看错误的响应对象。

有人可以伸出援手,以便了解如何做到这一点的最佳做法吗?

谢谢。

更新的图片

enter image description here

4 个答案:

答案 0 :(得分:2)

您只能使用以下方式查看:

if ( response.data )

检查是否:

  • 未定义

  • 0

  • 的NaN

  • 为空("")

答案 1 :(得分:2)

我不确定你为什么不工作,你可以做下面的事情并尝试。

if(response && response.data === null && typeof response.data === "object")

答案 2 :(得分:1)

您需要查找值null,而不是字符串"null"。

在您使用response.data === null的帖子中,但在屏幕截图中,您正在response.data === 'null'。那是检查字符串值'null',不会发生!编辑屏幕截图中的if语句,使其与您帖子中的语句相似;)

接下来要做的是用花括号包裹整个块。

现在,您的代码相当于:

if (response.data === null) {
    $scope.pages = response.data;
}
alert("....");
clearFields();

包含块中所有需要的代码:

if (response.data === null) {
    $scope.pages = response.data;
    alert("....");
    clearFields();
}

答案 3 :(得分:0)

希望这有助于解释为什么您没有得到您期望的结果(阅读代码中的评论):

function boooooom(msg) {
    alert('We\'re sorry folks! ' + msg);
}

$http({
    method: 'PUT',
    url: 'api/StorePage/PutStorePage?StorePageId=' + this.newpage.StorePageID,
    data: storePage,
})
    .then(
        // This callback will be called when the response is *available*
        function(response) {
            // Change this to `response.data` instead of `!response.data`
            if (response.data) {
                $scope.pages = response.data;
                alert('Congrats!');
            } else {
                boooooom('No data');
            }
        }, 

        // This callback is called if an error occurs or if the server 
        // returns a response with an *error* status.
        //
        // *Your* request hasn't caused an error as it *has* responded 
        // and the response is a 200 status (which is not an error status) 
        // so this callback doesn't get called.
        function(response) {
            boooooom('Houston we have a problem');
        }
    )
    // It looks like you always want to `clearFields` for both failure and success
    // so you can just do that here, which will do that for you.
    .finally(clearFields);