【问题标题】:How to loop a JSONArray passed from javascript in jsp?如何循环从jsp中的javascript传递的JSONArray?
【发布时间】:2017-07-27 06:20:51
【问题描述】:

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

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

【问题讨论】:

  • 您能否发布var movies 变量保存的JSON 数组值?
  • 注意:#searchResult 将产生所有 id 为 searchResult 的元素,并且由于 id 应该是唯一的,这将为您提供一个包含 1 个元素的数组。
  • #searchResult 中的# 意味着您将获得一个具有id 等于searchResult 的元素。我建议您改用标签。像$( "p" ) 这样的表达式将获得从文档中选择的 DOM 元素的集合。在这种情况下,标签 p.

标签: javascript jsp


【解决方案1】:

“它没有给我任何东西”,你的意思是“电影”变量是未定义的吗?如果是这样,您是否尝试过这个答案? https://stackoverflow.com/a/4803931/6638533

编辑(添加): 我认为通过提供 console.log 方法显示的内容来找到罪魁祸首会更有帮助;这样我们就可以知道问题出在#searchResult 还是在“movies”变量的类型中。

【讨论】:

  • 虽然是一个好点和 +1,但这仍然属于评论类别,并且仅链接到另一个帖子的答案可能会吸引反对票。所以你应该尝试证明作为答案。
  • @Rajesh 我不认为他有权评论其他人的问题...
  • @Simon 我知道。获得评论权限需要 50 个代表。我的观点是,他的回答就像评论一样,这可能会引起反对票。但他的观点是有效的。而且他别无选择,只能作为答案提出,他应该使其具有足够的描述性,足以证明答案的合理性。
  • @Rajesh 感谢您的建议。我已经编辑了我的答案,我的编辑有帮助吗?
【解决方案2】:

#searchResult 中的# 意味着您将获得一个具有id 等于searchResult 的元素。

解决方案 1

我不知道你的jsp在哪里我会假设你有一个getmovies.jsp请求然后你可以收到这样的结果jQuery

$.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】:

    您似乎正在为电影分配一个 JQuery 元素,如果该元素不存在,您将生成一个新元素,那么 movies.length 将为 0,您将一无所获。如果有一个名为 searchResult 的元素,您将得到一个包含一个元素的数组。

    【讨论】:

      【解决方案4】:

      var movies = $("#searchResult"); 控制台日志(电影);

      电影变量可以是字符串。请检查一下 。如果是字符串,用分隔符分割它,那么循环就可以了。

      【讨论】:

        猜你喜欢
        • 2014-12-21
        • 1970-01-01
        • 1970-01-01
        • 2016-04-07
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-12-18
        • 1970-01-01
        相关资源
        最近更新 更多