我的第一个提醒显示了项目列表,但第二个提示没有显示。我之前从未在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>
答案 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
方法中调用它,它就可以正常工作。