【问题标题】:Parsing a JSON object (list of object) through Javascript and loop in it?通过Javascript解析JSON对象(对象列表)并在其中循环?
【发布时间】:2012-01-11 20:38:20
【问题描述】:

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

我从我编写的 Web 服务中读取了服务的 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>

我有一个&lt;div id="service"&gt;

编辑: 快到了!

现在我有了这个:

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

像魅力一样工作。谢谢!

【问题讨论】:

    标签: java javascript ajax json jsp


    【解决方案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" });
    

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

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

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

    【讨论】:

    • 天啊!有效!但我有一个问题.. 脚本每 3 秒添加一次新的 div。我怎样才能更新那些? 编辑: 稍后我将尝试 jsp 代码!谢谢! ;)
    • @Enrichman:没问题。如果您希望 $("#service").append('&lt;p&gt;'+service+'&lt;/p&gt;'); 只是替换而不是追加,您应该使用 html 方法 $("#service").html('&lt;p&gt;'+service+'&lt;/p&gt;');
    • 我对此有疑问。最后一个服务覆盖所有服务。
    猜你喜欢
    • 1970-01-01
    • 2021-10-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-10-11
    • 1970-01-01
    • 2019-11-26
    相关资源
    最近更新 更多