我正在读取一个带有 jquery ajax 函数的 rss 文件,我成功地创建了数组函数 mycarousel_itemList
并使用 push 将项目填充到其中。我想在我当时创建的函数中使用这个数组,但出现错误:
mycarousel_itemList
is not defined
出了什么问题?
<script type="text/javascript">
var rss = 'http://search.issuu.com/userxxx/docs/recent.rss';
$.ajax({
type: 'GET',
url: 'js/issuuGallery/proxy.php?url='+rss,
dataType: 'xml',
success: function(xml) {
var ul = document.createElement("ul");
ul.setAttribute('id', 'issuu-gallery');
ul.setAttribute('class', 'overview');
$(xml).find('item').each(function(){
var mycarousel_itemList = [];
var id = $(this).find('[name="documentId"]').attr('value');
var src = 'http://image.issuu.com/'+id+'/jpg/page_1_thumb_small.jpg';
mycarousel_itemList.push(src);
console.log(mycarousel_itemList);
});
}
});
function mycarousel_itemLoadCallback(carousel, state)
{
for (var i = carousel.first; i <= carousel.last; i++) {
if (carousel.has(i)) {
continue;
}
if (i > mycarousel_itemList.length) {
break;
}
carousel.add(i, mycarousel_getItemHTML(mycarousel_itemList[i-1]));
}
};
/**
* Item html creation helper.
*/
function mycarousel_getItemHTML(item)
{
return '<img src="' + item.url + '" width="75" height="75" alt="' + item.url + '" />';
};
jQuery(document).ready(function() {
jQuery('#mycarousel').jcarousel({
size: mycarousel_itemList.length,
itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback}
});
});
最佳答案
我假设您只是加载一次 rss 提要,然后用结果创建一个轮播。如果是这样,这很容易解决。
寻找这一行:
var mycarousel_itemList = [];
那是在 ajax 成功回调中创建一个局部变量。您要做的是将其设为全局并将其移至顶部(将其设为 < script> 标记内的第一行)。
将 $.ajax 调用移至文档就绪回调内部。
找到以下jcarousel代码:
jQuery('#mycarousel').jcarousel({ size: mycarousel_itemList.length, itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback} });
将它移到 $.ajax 回调中作为回调中的最后一件事。
您的最终代码应如下所示:http://jsfiddle.net/h35VQ/
关于javascript - 从 jQuery ajax 成功函数返回一个数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12502336/