数据库为空时获取未定义

时间:2014-06-26 15:16:54

标签: javascript titanium

我的移动应用程序出了问题,我不知道如何解决它。 当我按下一个从数据库获取数据的按钮时,我在json中解析它,当我想在我的应用程序中使用它时,我得到undefined。锄头我可以做到这一点,所以我没有得到unifined。

注意 我只在数据库为空时才得到unfind。

这是我使用的代码

subjectButton.addEventListener('click', function(e) {
    Subjects.getSubjects(url, function(response) {
        if(response == '') {
            alert('There where no subjects found');
        } else {
           subjectView.remove(subjectsLabel);

           var data = JSON.parse(response);

           if(data != 'undefined') {

               var subjectNameButton = [];
               var subjectEditButton = [];
               var subjectDeleteButton = [];
               for(i in data) {
                   id = data[i].id;
                   var subject = data[i].subject;
                   var year = data[i].year;
                   var status = data[i].status;
                   var color;

                   Ti.API.info('id: ' + id);
                   Ti.API.info('type id: '+ typeof id);

有人可以向我解释我是如何做到的,所以我没有得到未定义的

2 个答案:

答案 0 :(得分:2)

喜欢@ 0101说json无法返回undefined所以你的问题就在别的地方。 我知道这不是最好的解决方案,但似乎对我有用:

subjectButton.addEventListener('click', function(e) {
        Subjects.getSubjects(url, function(response) {
                if(response == '') {
                        alert('There where no subjects found');
                } else {
                     subjectView.remove(subjectsLabel);

                     var data = JSON.parse(response);

                     var subjectNameButton = [];
                     var subjectEditButton = [];
                     var subjectDeleteButton = [];
                     for(i in data) {
                             id = data[i].id;
                             var subject = data[i].subject;
                             var year = data[i].year;
                             var status = data[i].status;
                             var color;

                             Ti.API.info('id: ' + id);
                             if(id != undefined) {
                                    //Your code here
                             } else {
                                     alert('There where no subjects found');
                             }
                        }
                 }
        });
});

所以在这里你检查一个变量是否返回undefined。如果它不是undefined它将运行您的代码,它将为您/用户提供警报消息

答案 1 :(得分:1)

您永远不会从"undefined"获得JSON.parse。错误必须发生在其他地方。试试这个:

Subjects.getSubjects(url, function(response) {
    if(!response) {
        alert('There where no subjects found');
    }
    else {
       subjectView.remove(subjectsLabel); // You probably should move this after JSON.parse

       try {
        var data = JSON.parse(response),
            subjectNameButton = [],
            subjectEditButton = [],
            subjectDeleteButton = [];

           for (i in data) { // Global i?
               id = data[i].id; // Global too?
               var subject = data[i].subject;
               var year = data[i].year;
               var status = data[i].status;
               var color;

               Ti.API.info('id: ' + id);
               Ti.API.info('type id: '+ typeof id);
               // ...
           }
       }
       catch(e) {
            console.log("Invalid JSON")
       };

       // ...
    }
}