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

标签 javascript jquery ajax

我正在读取一个带有 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 提要,然后用结果创建一个轮播。如果是这样,这很容易解决。

  1. 寻找这一行:

    var mycarousel_itemList = [];
    

    那是在 ajax 成功回调中创建一个局部变量。您要做的是将其设为全局并将其移至顶部(将其设为 < script> 标记内的第一行)。

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

  3. 找到以下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/

相关文章:

javascript - 如何从一个输入向列表添加项目

javascript - 删除使用 JQuery 动态添加的 html 元素

javascript - Angular 7 使用 *ngfor 分组数据

javascript - 为页面链接使用 url 参数

jquery - UI 对话框上的自动高度,如果高度更改,对话框将不再垂直居中

javascript - jQuery 日期/时间选择器

javascript - Angular 自定义指令不适用于外部 javascript 插件

javascript - 同一个 ajax 调用中的多个 url?这可能吗?

php - 高级搜索页面上的实时 MySQL 搜索结果

javascript - return 停止一个函数并返回一个值。但是为什么要在变量上使用它呢?