Javascript ajax响应后HTML结构受到干扰

Javascript ajax响应后HTML结构受到干扰,javascript,jquery,python-2.7,django-1.5,Javascript,Jquery,Python 2.7,Django 1.5,我使用的是Django1.5、Python2.7和jQuery1.9。虽然这个问题主要与javascript有关 我的html代码如下。这将形成一个对象列表,如: <div class="item cls"> <div class="item cls"> <div class="item cls"> <div class="item cls"> <div class="item cls"> <div class="item cls

我使用的是Django1.5、Python2.7和jQuery1.9。虽然这个问题主要与javascript有关

我的html代码如下。这将形成一个对象列表,如:

<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">

现在,当我通过ajax获取更多数据时,形成的结构如下所示:

<div class="item cls">
<div class="item cls">
<div class="item cls">
<div class="item cls">
    <div class="item cls"> #new div
        <div class="item cls"> #new div
                <div class="item cls"> #new div
                        <div class="item cls"> #new div

#新部门
#新部门
#新部门
#新部门
HTML:

{% for obj in objs %}        
        <div class="item cls">
            <div class="alpha"><a href="#"><img src="{{ STATIC_URL }}img/107.png" /></a></div>
            <div class="span6" id="abc_{{ obj.id }}">
            <h2 class="Title"><a href="#">{{ obj.t }}</a></h2>
            <p>{{ obj.a }}</p>

            <div class="tags">
            <a href="#"><i class="icon"></i> Intel</a>
            <a href="#"><i class="icon"></i> Architecture</a>
            </div>

           <a href="#" class="btn"><i class="icon"></i> Upload </a>
           <a href="#" class="btn"><i class="icon"></i> Download </a>
          </div>
        </div>
{% endfor %}
for(var i = 0; i < response.length; i++){
    var divs = document.getElementsByClassName('item');
    divs[parseInt(divs.length)-1].innerHTML = '<div class="item cls"><div class="alpha"><a href="#"><img src="{{ STATIC_URL }}img/107.png" /></a></div><div class="span6" id="abc_' + response[i].id + '"><h2 class="Title"><a href="#">' + response[i].t + '</a></h2><p>' + response[i].a + '</p><div class="tags"><a href="#"><i class="icon"></i> Intel</a><a href="#"><i class="icon"></i> Architecture</a></div><a href="#" class="btn"><i class="icon"></i> Upload </a><a href="#" class="btn"><i class="icon"></i> Download </a></div></div>'
{%for obj in objs%}
{{obj.a}}

{%endfor%}
AJAX成功:

{% for obj in objs %}        
        <div class="item cls">
            <div class="alpha"><a href="#"><img src="{{ STATIC_URL }}img/107.png" /></a></div>
            <div class="span6" id="abc_{{ obj.id }}">
            <h2 class="Title"><a href="#">{{ obj.t }}</a></h2>
            <p>{{ obj.a }}</p>

            <div class="tags">
            <a href="#"><i class="icon"></i> Intel</a>
            <a href="#"><i class="icon"></i> Architecture</a>
            </div>

           <a href="#" class="btn"><i class="icon"></i> Upload </a>
           <a href="#" class="btn"><i class="icon"></i> Download </a>
          </div>
        </div>
{% endfor %}
for(var i = 0; i < response.length; i++){
    var divs = document.getElementsByClassName('item');
    divs[parseInt(divs.length)-1].innerHTML = '<div class="item cls"><div class="alpha"><a href="#"><img src="{{ STATIC_URL }}img/107.png" /></a></div><div class="span6" id="abc_' + response[i].id + '"><h2 class="Title"><a href="#">' + response[i].t + '</a></h2><p>' + response[i].a + '</p><div class="tags"><a href="#"><i class="icon"></i> Intel</a><a href="#"><i class="icon"></i> Architecture</a></div><a href="#" class="btn"><i class="icon"></i> Upload </a><a href="#" class="btn"><i class="icon"></i> Download </a></div></div>'
for(变量i=0;i'

我在innerHTML中添加代码的那一行出现了一些问题。我不明白那是什么。请帮助!!!

我通过在django模板外添加一个div来解决这个问题

<div class="itemContainer">
        #previous HTML code
</div>

#以前的HTML代码
现在在我编写的ajax成功函数中

for(var i = 0; i < response.length; i++){
    var divs = $('.itemContainer')[0].innerHTML;
    $('.itemContainer')[0].innerHTML = divs.concat('//structure to concatenate');
}
for(变量i=0;i

我对Methodody不满意,但仍然适用于我。如果有更好的答案/修复方法,我们将不胜感激。

您正在将ajax响应“插入”到“最后一个div”。这就是您的结构被隐藏的原因。因为您正在使用jQuery,请利用“.insertAfter”方法。例如:

var div = jQuery('<div/>', {
    html: '<innerhtmlhere>'
});
div.insertAfter($('.item').last());
var div=jQuery(“”{
html:'
});
div.insertAfter($('.item').last());
试一试,让我知道你的结果

或者为了更快的实现:(如果您的响应文本是干净的)

$(“”).insertAfter($('.item').last());

文档:

您可能在某个地方丢失了一个
。您不必做一行标记,只需将其解析一次,然后将其存储在jQuery对象中,然后克隆它并设置从ajax请求中获得的值。您能更精确一点吗?我已经尝试将for循环放在带有itemContainer类的div中。仍然是innerHTML是一个问题你能给我们确切的HTML生成代码(不仅仅是主div)吗?这样我们就可以有更多的线索来搜索问题源问题源是innerHTML,我简化了很多查询。