通过Javascript解析JSON对象(对象列表)并在其中循环?

时间:2011-12-02 21:12:44

标签: java javascript ajax json jsp

好的,我知道有什么不对,但我无法理解。

我从我编写的Web服务中读取了一个服务的ArrayList(JSON mediatype)。 转到该地址会返回json字符串。

现在我正在尝试制作一个网页,用于显示这些值,并且每隔3秒看一次请求对页面发出的请求。

我该如何解析或使用它?阅读很多,我仍然是开始..

[无法将此对象传递给JSP并使用JSTL解析,循环和所有内容?那真是太棒了!]

这里是js代码:

 <script type="text/javascript">
setInterval(function(){
    $.ajax({ url: "/MyApp/rest/display", success: function(data){
        var objs = $.parseJSON(data);
        $.each(objs, function(i,service) {
            $("#service").append('<p>'+service+'</p>');
        });
    }, dataType: "json"});
}, 3000);
</script>

我有<div id="service">

修改 几乎就在那里!

现在我知道了:

<script type="text/javascript">
setInterval(function(){
    $.ajax({ url: "/myApp/rest/display", success: function(data){
        $.each(data, function(i,service) {
            var cont = 1;
            var newdiv = document.createElement('div');
            newdiv.setAttribute('id', "service"+i);
            $("#service"+i).html('<p>'+service.serviceId+" "+service.queue.lastNumber+'</p>');
            document.getElementById("services").appendChild(newdiv);
            cont++;
        });
    }, dataType: "json"});
}, 5000);
</script>

它得到了更新和所有(很好!)但我有一个问题:它在较大的一个(空div)内不断创建新的div 。我怎么能避免这个?

EDIT2:

没关系,我已经完成了! 只需在appendChild:

之前添加此行
if(!$("#service"+i).length)

像魅力一样工作。谢谢!

1 个答案:

答案 0 :(得分:1)

使用JQuery,您不需要解析data,因为在设置dataType: "json"时它已被解析为JSON。

$.ajax({ 
    url: "/MyApp/rest/display", 
    success: function(data) {
        $.each(data, function(i,service) {
            $("#service").append('<p>'+service+'</p>');
        });}, 
    dataType: "json" });

PS。如果这不起作用,请发布您的AJAX调用返回的JSON。

编辑:这是JSTL的做事方式: 创建一个JSF或JSP,它不会返回完整的HTML页面,而只是在#service div中返回您想要的内容。让我们调用页面doit.jsp。现在我们可以使用ajax将它放在#service div。

$.ajax({
    url: "doit.jsp",
    success: function(data) { $("#service").html(data); });