在ajax响应之后,HTML结构受到干扰

时间:2013-04-11 07:43:15

标签: javascript jquery python-2.7 django-1.5

我正在使用 django 1.5,python 2.7和jquery 1.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 %}

AJAX成功:

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

我在innerHTML中附加代码的行中存在一些问题。不明白那是什么。请帮忙!!!

2 个答案:

答案 0 :(得分:0)

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

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

现在我写的ajax成功函数

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

我对methodolody不满意但仍然适合我。任何更好的答案/修复将不胜感激。

答案 1 :(得分:0)

你将ajax响应插入到最后一个div中。这就是为什么你的结构被冲洗了。由于您使用的是jQuery,因此请利用“.insertAfter”方法。例如:

var div = jQuery('<div/>', {
    html: '<innerhtmlhere>'
});
div.insertAfter($('.item').last());

试一试,让我知道你的结果。

或者更快的实施:(如果您的回复文本是干净的)

$("<responsetexthere>").insertAfter($('.item').last());

文档:http://api.jquery.com/jQuery/#jQuery2