我写了一个示例html,它从servlet中检索JSON并显示。但唯一的问题是我想知道如何使用jQuery迭代返回的JSON响应。目前我正在使用javascript for loop。
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<script type="text/javascript" src="javascript/jquery-1.4.4.js"></script>
<!-- Here we need to load the trends on page load starts -->
<script>
$(document).ready(function(){
// now load the results from servlet
// $("#trends").load("ReadRSSTrendsUsingServlet");
// now get the result and retrieve each entry
$.getJSON("ReadRSSTrendsUsingServlet",function(data){
// alert(data.trends[2]);
for(var i=0;i<data.trends.length;i++)
{
$("#trends").append(data.trends[i]).append("<br>");
}
});
});
</script>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>Insert title here</title>
</head>
<body>
<div id="trends">
<!-- Here is the data to be loaded -->
</div>
</body>
</html>
之后显示JSON值列表。我的JSON对象如下所示
{"trends":["test1","test2","test3","test4","test5"]}
我想要知道以下步骤的jQuery等价物
for(var i=0;i<data.trends.length;i++)
{
$("#trends").append(data.trends[i]).append("<br>");
}
答案 0 :(得分:3)
在这种情况下,你可以使用javascript join方法
var trends= ["1", "2", "3"];
$("#trends").append(trends.join('<br />'));
答案 1 :(得分:2)
您可以使用Jquery的$.each。
答案 2 :(得分:1)
$。each()将是更好的选择。你想对jQuery选择的结果而不是JavaScript对象使用.each()。
引用the docs:
$ .each()函数与.each()不同,后者用于独占于jQuery对象进行迭代。 $ .each()函数可用于迭代任何集合,无论它是地图(JavaScript对象)还是数组。在数组的情况下,回调每次都传递一个数组索引和相应的数组值。 (也可以通过this关键字访问该值,但Javascript将始终将此值包装为Object,即使它是一个简单的字符串或数字值。)该方法返回其第一个参数,即迭代的对象。
答案 3 :(得分:1)
$.each(data.trends, function(i, val){
$("#trends").append(val+"<br>");
});
修改强>
正如Puneet在他的回答中所表明的那样,使用join
更好地完成在这个特定情况下完成代码建议的更直接的方法,而不是循环并在循环中追加。
因此,虽然我认为我已经明确地回答了问题(如何使用jQuery替换for循环),并且您对上面的示例没有任何问题,我会确保并查看Puneet的答案,看看是否这对你也有用。
答案 4 :(得分:0)
jQuery.each。
您还可以使用其他for
语法:
for(var key in obj)
//do smth with obj[key]