Django + Jquery, расширяющий AJAX div - PullRequest
4 голосов
/ 10 августа 2009

Как я могу, когда пользователь нажимает на ссылку, открыть div прямо под ссылкой, которая загружает его содержимое через AJAX?

Спасибо за помощь; Я не могу узнать, как. Просто статическое заполнение div на стороне сервера при загрузке страницы работает нормально, но для этого слишком много контента.

Я как бы ищу конкретную версию решения Django, если у кого-нибудь она есть?

Ответы [ 2 ]

12 голосов
/ 10 августа 2009

jQuery.load делает именно это:

$("div#my-container").load("/url/to/content/ #content-id")

извлекает содержимое из /url/to/content/, фильтрует его по #content-id и вставляет результат в div#my-container.

edit: в этом нет ничего специфического для Django, поскольку все это на стороне клиента. Но если вы настаиваете ...

templates/base.html

<html>
    <head>
        <title>My funky example</title>
        <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
        {% block extrahead %}{% endblock %}
    </head>
    <body>
        {% block content %}{% endblock %}
    </body>
</html>

templates/page.html

{% extends "base.html" %}
{% block extrahead %}
    <script type="text/javascript">
        $(function(){
            $('a.extendable').click(function(){
                $(this).after($('<div class="external-content"></div>').load($(this).attr('href') + ' #content'));
                return false;
            });
        });
    </script>
{% endblock extrahead %}
{% block content %}
    <p>Hi! <a href="/external/content/a/" class="extendable">Click here</a> and wait for something funny to happen!</p>
    <p><a href="/external/content/b/" class="extendable">This link</a> is cool, too!</p>
{% endblock content %}

templates/a.html

{% extends "base.html" %}
{% block content %}
    <div id="content">so long and thanks for all the fish</div>
{% endblock %}

templates/b.html

{% extends "base.html" %}
{% block content %}
    <div id="content">Don't panic</div>
{% endblock %}

urls.py

from django.conf.urls.defaults import *
urlpatterns = patterns('django.views.generic.simple',
    (r'^$',                    'direct_to_template', {'template': 'page.html'}),
    (r'^external/content/a/$', 'direct_to_template', {'template': 'a.html'}),
    (r'^external/content/b/$', 'direct_to_template', {'template': 'b.html'}),
)

Вы можете скачать весь код здесь .

1 голос
/ 10 августа 2009

Как то так будет работать

<html>
<head>
    <script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
    <script type="text/javascript">
    function loadDiv() {
        $.get("test.php", function(data){
          $('#thediv').html(data);
        });
    }

</script>
</head>
<body>
<a href="javascript:loadDiv();">Load Div</a>
<div id="thediv"></div>

</body>
</html>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...