在我的jsp中,我试图迭代从js传递的JSONArray。 这就是我所做的:
<script lang="javascript">
var movies = $("#searchResult");
console.log(movies);
for (var i = 0; i < movies.length; i++) {
console.log(movies[i]);
}
</script>
但它没有给我任何东西 任何帮助表示赞赏!
答案 0 :(得分:2)
它不会给我任何东西&#34;,你的意思是电影&#39;变量未定义?如果是这样,你试过这个答案吗? https://stackoverflow.com/a/4803931/6638533
编辑(添加): 我认为通过提供console.log方法显示的内容来找到罪魁祸首会更有帮助;这样我们就可以知道问题是在#searchResult还是在电影&#39;变量的类型。
答案 1 :(得分:1)
似乎你正在为电影分配一个JQuery元素,如果没有这个元素,你将生成一个新元素,那么movies.length将为0,你将得不到任何东西。如果有一个名为searchResult的元素,您将获得一个元素的数组。
答案 2 :(得分:1)
#
中的#searchResult
表示您将获得id
等于searchResult
的单个元素。
解决方案否1
我不知道你的 jsp在哪里我会假设你有一个getmovies.jsp
请求然后你可以收到像thisjQuery这样的结果
$.getJSON("getmovies.jsp", function(json) {
$.each (json, function(k, movie) {
console.log(movie.title);
});
});
第2号解决方案 如果您有这样的代码:
<% List moviesList = (List) session.getAttribute("clist");
JSONArray moviesJSON = new JSONArray();
JSONObject tmp;
for (int i = 0; i < selected.size(); i++) {
tmp = new JSONObject();
tmp.put("id", selected.get(i));
tmp.put("title", selected.get(i).getTitle());
moviesJSON.put(tmp);
}%>
然后你可以像这样在JavaScript中接收JSON:
var moviesJSON = <%=moviesJSON%>;
moviesJSON.each(function( movies ) {
movies.each(function(index, movie) {
console.log( index + ": " + movie.title );
});
注意这是您可以尝试的另一种选择〜
我建议你改用标签。类似这样的$( "li" )
这个表达式将获得从文档中选择的DOM元素的集合。在这种情况下,标记为li
。
这可以为您提供解决方案。
var movies = $("#searchResult").find("li");
movies.each(function( index ) {
console.log( index + ": " + $( this ).text() );
});
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div id="searchResult">
These are the results:
<ul class="level-1">
<li class="result">I</li>
<li class="result">II</li>
<li class="result">III</li>
<li class="result">IV</li>
<li class="result">V</li>
</ul>
</div>
答案 3 :(得分:1)
var movies = $(“#searchResult”); 的console.log(动画);
电影变量可以是字符串。请检查一下 。如果它是字符串,则用分隔符将其拆分,然后循环就可以了。