从jQuery ajax成功函数返回一个数组

时间:2012-09-19 20:26:04

标签: javascript jquery ajax

我正在使用jquery ajax函数读取一个带有jquery ajax函数的rss文件,我创建了数组函数mycarousel_itemList并使用push填充项目。我想在我创建的函数中使用此数组,但是我得到错误:

  

mycarousel_itemList未定义

出了什么问题?

<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}
});
});

1 个答案:

答案 0 :(得分:0)

我假设您只是加载了rss feed,然后创建了一个带有结果的轮播。如果是这样,这很容易解决。

  1. 寻找这一行:

    var mycarousel_itemList = [];
    

    这是在ajax成功回调中创建局部变量。您要做的是将其设置为全局并将其移至顶部(将其设置为&lt; script&gt;标记内的第一行)。

  2. 将$ .ajax调用移至文档就绪回调中。

  3. 找到以下jcarousel代码:

    jQuery('#mycarousel').jcarousel({
        size: mycarousel_itemList.length,
        itemLoadCallback: {onBeforeAnimation: mycarousel_itemLoadCallback}
    });
    

    将其移至$ .ajax回调内部,作为回调中的最后一件事。

  4. 您的最终代码应如下所示:http://jsfiddle.net/h35VQ/