2015-11-24 2 views
1

i`m пытается установить результат запроса в массив или объект JSON с помощью ALASQL:Выберите в массив или объект

var resdata2 = [ { A: "test", B: "testB" } ]; // Destination array 

// Select first and second column values from xlxs 
alasql('select A,B into ? from xlsx("gohan.xlsx")', [resdata2]); 

console.log(resdata2);      // Shows one object for xlsx line! 
console.log(resdata2.length);     // Shows length of 1 only 

$.each(resdata2,function(idx, obj) { 
    console.log(obj.A);      // Shows only 'test' 
    console.log(obj.B);      // Shows only 'testB' 
}); 

Электронная таблица имеет 18 линий, которые появляются в первом console.log(), однако во втором и console.log() в каждой функции он показывает только первую строку "Test" и "testB".

Любые идеи для отображения всех строк?

+0

Вы тестируете SELECT ... INTO? В противном случае я бы сбросил его и использовал 'var result = alasql ('SELECT A, B FROM xlsx (" gohan.xlsx ")');' – James

+0

он возвращает мне результат как undefined. var result = alasql ('SELECT A, B FROM xlsx ("gohan.xlsx")'); console.log (результат) // undefined – user3440015

+0

Посмотрите на http://jsfiddle.net/ko54Ltv5/ и посмотрите, как A, B и C не печатаются, так как вызов является асинхронным – mathiasrw

ответ

1

Возможно, вы урожденная использовать интерфейс обратного вызова:

var resdata2; 
alasql('select A,B from xlsx("gohan.xlsx")', [], function(data) { 
    resdata2 = data; 
}); 

Здесь вам нужно использовать интерфейс обратного вызова AlaSQL, потому что функция XLSX() является асинхронной.

 Смежные вопросы

  • Нет связанных вопросов^_^