【发布时间】:2012-03-19 20:31:07
【问题描述】:
我在从关联数组中检索数据时遇到问题。
要清楚,这就是我的代码:
var modelTable = {};
然后我将一些东西保存到对象中:
//inside getJSON-call:
$.each(data.Models, function (index, val) {
modelTable[val.Name] = val;
});
在这种情况下,val 只是一个 json 对象:
{
Models : [
{
Name: "4-stroke (EBE)",
ModelNumber: "VRE",
Engine: "125ccm"
}
]
}
但是当我尝试像这样从我的modelTable 获取数据时:
var model = modelTable["4-stroke (EBE)"];
根据 IE 的开发者工具,该对象为 null 或未定义:
SCRIPT5007: Unable to get value of the property 'Name': object is null or undefined
编辑:大代码-sn-ps:
它基本上是两个用于搜索的输入字段(使用 jQuery UI 自动完成;不重要)。 第一个框,用于选择摩托车品牌(品牌),然后在选择品牌时填充第二个并包含模型名称。第二个输入字段的值(javascript .text())用于查找modelTable中的所有特定数据,因为我需要这些数据来提交我的搜索表单。
$(function () {
if ($('#mc_search').length) {
init_mc_makes();
}
});
var modelTable = {};
function init_mc_makes() {
//populates the brand drop down list in jquery ui autocomplete
}
function init_mc_models() {
//populates the model drop down list in jquery ui autocomplete
//and iterates the json data to save associative data in modelTable
//calls submitSearch(name, brand)
}
function submitSearch(name, brand) {
var model = modelTable[name];
var chosenModelNumber = model.ModelNumber; //Unable to get value of the property 'ModelNumber': object is null or undefined
//submits form with data...
}
【问题讨论】:
-
没有足够的代码。显然
modelTable在您尝试访问它时不在范围内,因此您需要将其设置为,但如果没有更大的 sn-p,我们无法告诉您究竟如何。 -
您的意思是
data有那个 JSON 值,对吗?不是val -
@Jon
modelTable在顶级范围内声明(不在 dom-ready 中)。我会添加更多代码。 -
IE7 不支持 JSON,IE8+ 可用。
标签: javascript object associative-array