为什么我的简单for-each循环,在我的对象集合上,不起作用(JQuery)?

时间:2014-03-20 15:59:56

标签: javascript jquery foreach

我有一个对象集合,通过EL在JavaScript / JQuery中检索(至少这是我的想法)。我将变量命名为“countries”。在调用alert(countries)时,我的输出是预期的。我应该有四个要素。

我认为这将是世界上最简单的事情,但由于一个未知的原因,它只是不起作用所以...帮助?

var countries = "${requestScope.countries}";

alert(countries)提供以下输出:

[beans.CountryBean@(id#), beans.CountryBean@(id#), 
beans.CountryBean@(id#), beans.CountryBean@(id#)]

@AaronDigulla建议使用以下语法:

$.each(countries, function(index, value) { ... });

但是这个几乎相同的代码没有输出。

$.each(countries, function(index, value) { alert(index + "here");});

假设它会产生4个警报,我错了吗?

1 个答案:

答案 0 :(得分:2)

使用$.each(countries, function(index, value) { ... });

$.each()可以迭代各种事物(数组,对象和JQuery选择器)。

接下来,您需要将bean转换为JavaScript。浏览器无法理解beans.CountryBean@(id#)。使用像Gson这样的JSON框架来创建JSON字符串:

var countries = ${new Gson().toJson(requestScope.countries)};

请注意,您不能再引用该字符串; Gson会为你做这件事。但我担心这种表达超出了EL的范围。在这种情况下,您需要在其他地方进行转换并将其放入EL上下文中。