如何访问此javascript MAP对象中的数据?

时间:2010-12-15 21:50:58

标签: javascript jquery object properties map

我正在进行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;
};

谢谢大家。

2 个答案:

答案 0 :(得分:0)

您的问题是success函数仅在您的AJAX请求完成时运行。如果您想安全地访问calMap,则需要 回调。

答案 1 :(得分:0)

您需要将calMap初始化为数组(即方括号,而不是曲线括号):

var calMap = [];

然后,在你的each函数中,我猜你想要更像

的东西
calMap.push({
    title: $(this).attr("ows_Title"),
    date: $(this).attr("ows_EventDate")
});