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

2024-04-02

好吧,我知道出了点问题,但我不明白是什么。

我从我编写的 Web 服务中读取了 Service 的 ArrayList(采用 JSON 媒体类型)。 访问该地址会返回 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>

I've a <div id="service">

EDIT:差不多了!

现在我有这个:

<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)

奇迹般有效。谢谢!


使用 JQuery 你不需要解析data因为当你设置时它已经被解析为 JSONdataType: "json".

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

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

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

$.ajax({
    url: "doit.jsp",
    success: function(data) { $("#service").html(data); });
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

通过 Javascript 解析 JSON 对象(对象列表)并在其中循环? 的相关文章

随机推荐