Я получил успешный вызов на контроллер базы данных coldfusion с использованием метода getJSON jQuery.Возвращенная информация возвращается в формате:
{
"COLUMNS": ["PRODUCT_HIERARCHY", "WEBPRODLINE", "POSITION", "FEATURES", "BENEFITS", "LINKS", "VIDEOS", "IMAGE_CUTAWAY", "MARKEDASNEW"],
"DATA": [
["23456689", "ProdName1", "A Feature 1", "A Benefit 1", "url", "vid_url", "img_name", "N"],
["234566891", "ProdName2", "A Feature 2", "A Benefit 2", "url", "vid_url", "img_name", "N"]
]
}
Теперь я хочу сохранить возвращенную информацию как объект, который я затем могу отфильтровать локально, вместо того, чтобы сделать еще один вызов БД.Проблема в функции initializeView.Вот соответствующий сценарий:
$(document).ready(function() {
var productsFlag = false;
var enableLog = true;
var allProducts = $.getJSON(jsonURL, { method: "getAllProducts", returnformat: "json" }, function(data) {
productsFlag = true;
});
waitOnJson();
function waitOnJson() {
//this shows up in the log
logThis('areProductsReady?');
if (productsFlag) {
//this shows up in the log
logThis('productsFlags ready');
initializeProductView();
} else {
//this shows up in the log
logThis('productsFlags not ready');
t = setTimeout(waitOnJson, 100);
}
}
function initializeProductView() {
//this shows up in the log
logThis('initializeProductView');
//this displays [object Object]
alert(allProducts);
//this displays undefined
alert(allProducts.DATA);
$.each(allProducts.DATA, function(i, item) {
//this doesn't show up in the log
logThis(item[1]);
});
}
//as you can tell, this writes out to a debug console on the page
function logThis(eventString) {
if (enableLog === true) {
$('<p/>').append(eventString).appendTo("#log");
}
}
});
Я уверен, что проблема в том, что я не понимаю, что возвращает getJSON, но у меня либо слишком много кофеина, либо недостаточно, и я не вижуЭто.ПОМОГИТЕ!
Кроме того, есть какие-нибудь мысли о моем шаге ожидания блокировки?Я хочу использовать данные в нескольких различных функциях, но мне также нужно подождать, пока они загрузятся, прежде чем инициализировать представление.