#javascript #titanium
#javascript #titanium
Вопрос:
У меня проблема с моим мобильным приложением, я не знаю, как ее решить. когда я нажимаю кнопку, которая получает данные из базы данных, я анализирую их в формате json, и когда я хочу использовать его в своем приложении, я получаю undefined. Как я могу сделать так, чтобы я не получал неопределенное.
Обратите внимание, что я получаю undefind только тогда, когда база данных пуста.
Это код, который я использую
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);
Может кто-нибудь объяснить мне, как я могу сделать так, чтобы я не получал неопределенное
Ответ №1:
Как @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
, он запустит ваш код, иначе он выдаст вам / пользователю предупреждающее сообщение
Ответ №2:
Вы никогда не получите "undefined"
from 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")
};
// ...
}
}