类型错误 - 如果data.data未定义,则处理错误

时间:2017-07-27 01:45:20

标签: javascript jquery html angularjs angularjs-controller

我有一个功能,需要检查输入是否已经存在数据库中的现有照片。它已经可以显示它是否已有现有照片。我现在的问题是,如果我输入一个ID并且没有任何照片,则会显示错误。你能帮我解决这个错误吗?

$scope.checkPhoto = function(newSCPID) {
if ($scope.newID == undefined) {
    alert('Please input new id');
} else {
    console.log($scope.newID);
    $scope.loadingloader = true;
    $('#loginloader').show();

    Service.checkPhoto($scope.newID)
        .then(function(data) {
            //$rootScope.loader = true;
            $scope.checkedPhoto = data.data[0].photos;
            //alert(data.data[0].photos);
            if (data.data[0].photos == undefined) {
                alert('Please input newid');
            }

            // alert($scope.checkedPhoto);
            //$rootScope.loader = false;
            $('#loginloader').hide();
            $('#notif').hide();
            // Original Values
        });
    }
}

如果我输入的新ID没有现有照片,则API会显示data.data [0] .photos未定义的错误。

enter image description here

我需要显示一个标题,表明该特定新ID中没有现有照片。我怎么能这样做

5 个答案:

答案 0 :(得分:0)

您正在检查未定义的照片,因此您需要检查此data.data[0]而非此data.data[0].photos==undefined,因为您试图在{{1}时检查data.data[0].photos==undefined已经是undefined,undefined没有属性照片。

答案 1 :(得分:0)

在分配照片之前检查data.data [0];

Service.checkPhoto($scope.newID)
                    .then(function(data){
                        //$rootScope.loader = true;
                        if(data.data[0]) {
                            $scope.checkedPhoto=data.data[0].photos;

                           if(data.data[0].photos==undefined)
                           {
                                alert('Please input newid');
                           }
                           $('#loginloader').hide();
                           $('#notif').hide();
                           // Original Values
                        }

                    }
                );

答案 2 :(得分:0)

看起来data.data应该是一个数组。因此,在尝试操作其项目之前,最好检查数组是否为空。

.then(function(data){
    if (data.data.length && data.data[0].photos) {
        $scope.checkedPhoto = data.data[0].photos;
    } else {
        alert('Please input newid');
    }
    $('#loginloader').hide();
    $('#notif').hide();
}

答案 3 :(得分:0)

编写一个可以用于整个应用程序的常用函数。

function isUndefinedOrNull(val) {
    return angular.isUndefined(val) || val === null || val === '';
}

在执行工作之前检查你的价值。以下是以下示例:

if(!isUndefinedOrNull(data.data && data.data[0].photos))
{
  alert('Please input newid');
}

答案 4 :(得分:-1)

您可以将其包装在try{} ... catch(e){}块中。

list