我正在进行AJAX调用,返回XML数据,这是我的'success:'函数(回调):
success: function (data) {
var $rowArray = $(data).find("[nodeName=z:row]");
$rowArray.each(function(index) { // for each date put it into calMap.
calMap[$(this)[index].title] = $(this).attr("ows_Title");
calMap[$(this)[index].date] = $(this).attr("ows_EventDate");
});
}
calMap 是在函数外部声明的全局javascript对象。
var calMap = {};
我想要做的是创建一个函数,我可以传入标题,让它搜索 calMap 获取该标题,如果找到,则特定对象是返回,我将能够访问该对象的日期属性。
问题是,我似乎无法访问我插入到calMap对象中的数据。对于初学者,我只想打印地图。尝试了 eval ,尝试警告 calMap [0] ,尝试提醒 calMap [0] .title ,但什么都没有。有人可以帮我弄这个吗?谢谢!
更新: 我想做这样的事情:
var data = getData("myTitle");
function getData(title) {
// if title is in calMap, something like this?
var result = (calMap[title]));
return result; // returns an object or NOTHING
}
然后我将检查日期是否定义,如果是,我将访问其属性(即 data.date 。这有意义吗?
解答: 我最终使用了一个数组。仍然认为我应该能够使用对象MAP,但需要完成我的项目。
以下是访问数组项的代码的最终代码:
function hasCalDate(code)
{
var matched = "";
for (var f=0;f<calMap.length;f++){
var re = new RegExp(code);
if (re.test(calMap[f].title))
{
matched = calMap[f].title+','+calMap[f].date;
}
}
return matched;
};
谢谢大家。
答案 0 :(得分:0)
您的问题是success
函数仅在您的AJAX请求完成时运行。如果您想安全地访问calMap
,则需要 回调。
答案 1 :(得分:0)
您需要将calMap
初始化为数组(即方括号,而不是曲线括号):
var calMap = [];
然后,在你的each
函数中,我猜你想要更像
calMap.push({
title: $(this).attr("ows_Title"),
date: $(this).attr("ows_EventDate")
});