Я нашел много вопросов, похожих на мои;но ни один из ответов, которые я видел, казалось, не работал для меня.Так вот моя проблема.Я использую JQuery JSONP, чтобы получить довольно много информации о некоторых книгах (JSON статичен, поэтому в него встроена жестко закодированная функция).У меня это отлично работает.Моя проблема заключается в том, что мне нужно ссылаться на JSON еще несколько раз, и, учитывая его статичность, я решил установить локальный массив со значениями.Итак, вот мой код ниже:
function changeList(cat) {
getList(cat);
}
var bookArray = new Array();
function parseResponse(jsonData) {
$('#bookList').empty();
var items = [];
var p = '0';
$.each(jsonData, function(item, i) {
bookArray[p] = { 'bookId':i.bookId, 'category':i.category, 'publishedDate':i.publishedDate, 'title':i.title, 'description':i.description, 'images':i.images };
var allImages = i.images;
if(allImages.length > 1) {
var imageLoc = allImages.toString().split(",");
} else {
var imageLoc = new Array(allImages);
}
var theDate = new Date();
theDate.setTime(i.publishedDate * 1000);
var year = theDate.getUTCFullYear();
var month = theDate.getUTCMonth();
var day = theDate.getUTCDate();
var d = months[month] + " " + day + ", " + year;
items.push('<li><a href="/' + i.category + '/' + i.bookId + '/index.html"><img border="0" height="70" width="124" src="' + imageLoc[0] + '"><p>Published: <strong>' + d + '</strong><br /><span class="bookTitle">' + i.title + '</span> ' + i.description + '</p></a></li>');
p++;
});
$('<ul/>', {
html: items.join('')
}).appendTo('#bookList');
}
function getList(section) {
$.getJSON('http://www.otherdomain.com/book_'+ section +'.json?format=jsonp&callback=?', function(data) { });
}
То, что делает фрагмент кода выше, выплевывает список книг из определенной категории на странице.Слева есть меню, в котором есть категории и запускается функция changeList () (которая, в свою очередь, запускает другие функции, чтобы нарисовать правильный json и выплюнуть их на странице).Эта часть работает безупречно!
Это подводит меня к моей проблеме, как вы можете видеть в функции parseResponse (), которую я заполняю созданным мной массивом bookArray.Если я ссылаюсь на этот массив внутри функции, у меня нет проблем.Тем не менее, если я пытаюсь ссылаться на него снаружи (например, alert (bookArray [0] ['title']), я получаю, что он не определен. Что я делаю не так? Я не самый технически подкованный человек, поэтому у вас естьиспользовать маленькие слова на меня. Спасибо за любую помощь!
РЕДАКТИРОВАТЬ Вот фрагмент, чтобы дать вам представление о том, как выглядит файл JSON:
parseResponse(
[{
"bookId":"1",
"category":"A",
"publishedDate":"1266870137",
"title":"Title to first story",
"description":"The first story.",
"images":["http://www.otherdomian.com/books/fff.jpg","http://www.otherdomian.com/books/aaa.jpg"]
},{
"bookId":"2",
"category":"A",
"publishedDate":"1366870142",
"title":"Title to second story",
"description":"The second story.",
"images":["http://www.otherdomian.com/books/fff.jpg","http://www.otherdomian.com/books/aaa.jpg"]
}
])