js如何让我的数组被其他函数看到

时间:2010-12-13 20:54:19

标签: javascript xml ajax

我的第一个提醒显示了项目列表,但第二个提示没有显示。我之前从未在ajax / js中做过任何事情所以我不知道如何返回我的数组,以便其它函数可以看到它。

var mycarousel_itemList = [];

$(document).ready(function () {
    $.ajax({
        type: "GET",
        url: "xml/images.xml",
        dataType: "xml",
        success: function (xml) {

            $(xml).find('image').each(function () {
                var id = $(this).attr('id');
                var url = $(this).find('url').text();
                mycarousel_itemList.push('{url:"' + url + '",' + 'id:"' + id + '"}');

                alert(mycarousel_itemList);
            });
        }
    });
    alert(mycarousel_itemList);
});

这就是我的xml的样子

<images>
  <image id="1">
    <title>item</title>
    <url>images/image.gif</url>
    <desc>description of an item</desc>
  </image>
  <image id="2">
     <title>anotheritem</title>
    <url>images/images.gif</url>
    <desc>description of an item</desc>
  </image>
</images>

2 个答案:

答案 0 :(得分:0)

mycarousel_itemList数组未在函数中声明,因此是全局的。您应该能够在success事件函数中访问该数组。

您的具体示例有些不妥之处(例如,success函数未被命中,因为服务器没有响应。)

如果我复制并粘贴您的代码并简单地用JSONP服务替换服务器端组件(这样我可以跨域执行AJAX),我就可以访问该阵列了:

var mycarousel_itemList = [];

$(document).ready(function () {
    var url = "http://github.com/api/v2/json/user/show/yui";
    $.ajax({
        type: "GET",
        url: url,
        dataType: "jsonp",
        success: function (data) {
                mycarousel_itemList.push(data.user.company + ' - ' + data.user.blog);
                alert(mycarousel_itemList[0]);
        }
    });
});

你可以test it out here

答案 1 :(得分:0)

回答直接问题:当调用第二个警报时,不可能填充数组,因为那时AJAX调用没有时间完成。

该阵列究竟需要什么功能?

在填充数组后,只需在success方法中调用它,它就可以正常工作。