1

将 json 数组发送到我想将其附加到 div 的 jquery 脚本时遇到问题。在 php 中,我创建了一个包含以下 html 代码的 json 数组:

<li id="1234">
   <span class="some">$1</span>
   <span class="some2">$1</span>
   <div class="somediv"></div>
</li>

所以整个 json 数组看起来像这样:

[{"id":"12435","text":"<li id=\"1234\"><span class=\"some\">$1</span>"},{"id":"13542","text":"<span class=\"some2\">$1</span><div class=\"somediv\"></div></li>"}];

现在我使用 getJSON 来获取 json 对象,然后将结果附加到 div 中,如下所示:$(".container").append(val);

现在的问题是,当试图附加 JSON 结果时,这就是附加的内容:

<li id="1234">
   <span class="some">$1</span>
</li>
<li id="1234">
   <span class="some2">$1</span>
   <div class="somediv"></div>
</li>

当我尝试用它输出 myval时,alert(val)它清楚地表明 json 结果是正确的(没有结束<li>标签),但是在附加它时,<li>会添加标签。

有谁知道这可能是什么原因?

这就是我从我的 php 文件中获取值的方式:

$.getJSON("../ajax.php?action=getresults", function(data)
        {
            var obj = $.parseJSON(data);

            $.each(obj, function(key,val)
            {
                $.each(obj[key], function(key, dval)
                {
                    if(key == "text")
                    {
                        alert(dval);
                        $(".container").append(dval);
                    }
                })          

            });         

        });
4

4 回答 4

2

jQuery 正在附加 HTML,但您正在向它传递部分 HTML 块。尝试将所有 HTML 连接成一个值,然后附加它。

于 2012-12-17T19:08:08.720 回答
2

jQuery 方法需要完整的 dom 节点。jQuery 方法被设计为仅从写了一半的标签自动创建元素,因此这可能不像您希望的那么容易。

一种替代方法是在 JavaScript 中构建字符串并在完成时追加。或者,您可以使用 vanilla JavaScript 执行此操作。不过,我会警告它,因为任何错误都可能使页面处于令人讨厌的状态。

于 2012-12-17T19:08:49.100 回答
1

目前,您的 html 标签在第二个数组中关闭。因此,您必须在附加之前将所有收集到的 html 存储到一个 var 中。

var html = '';

$.each(obj[key], function(key, dval)
{
    if(key == "text")
    {
        alert(dval);
        html += dval;
    }
});

$('.container').append(html);  
于 2012-12-17T19:08:35.203 回答
0

你试过这个吗?

$(".container").html(val);
于 2012-12-17T19:04:22.423 回答