如何在jsp中循环从javascript传递的JSONArray?

时间:2017-03-07 06:24:30

标签: javascript jsp

在我的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>

但它没有给我任何东西 任何帮助表示赞赏!

4 个答案:

答案 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(动画);

电影变量可以是字符串。请检查一下 。如果它是字符串,则用分隔符将其拆分,然后循环就可以了。