dosya97
@dosya97
Fullstack web-developer

Не работает append("some jquery functionon") в jquery при получении их с ajax?

Доброго времени суток. Возникла проблема в обновлении контента динамическим путем. Есть django-server и ajax запросами с помощью setInterval() вытягиваю данные с сервера. Так вот в django-templates заготовил шаблон с jquery кодом и при отправке с сервера на ajax, делаю рендер с помощью .append() либо .html(). Все прекрасно работает при обновлении страницы. Но мне кажется что то что я якобы срендрил как текст падает в dom, но JQ не выполняет его потому что это не типа "консоли", а выполняет он только те вещи которые у него впереди. Я правильно понимаю?
Ладно вот собственно код с django:
from django_ajax.decorators import ajax
from message.models import Message
from django.utils import timezone

@ajax
def index(request):
    context={
        "friends":[],
        "messages":[],
    }
    index=0
    if Message.objects.unread_messages_count(request.user)!=0:
        for message in Message.objects.filter(to_user=request.user,viewed__isnull=True,messaged__isnull=True):
            index+=1
            context["messages"].append({
                "message":message.message[:255],
                "user":message.from_user.get_full_name,
                "duration":index*2200+6000
            })
            message.messaged=timezone.now()
            message.save()
        return render(request, 'message.html',context)

Призываю данные с пом. эйджакс:
<script src="{% static 'scripts/js/jquery-latest.js' %}"></script>
<script type="text/javascript" src="{% static 'django_ajax/js/jquery.ajax.min.js' %}"></script>
<script src="{% static 'scripts/js/jquery.growl.js' %}"></script>
<link rel="stylesheet" href="{% static 'scripts/css/jquery.growl.css'%}">

<script>
    function ajax_updates() {
        ajaxGet("{% url 'ajax_updates' %}",function(content){
                $('#notifications').append(content);
        })
    }
    setInterval(ajax_updates, 5000);
    ajax_updates();
</script>
<script id="notifications"></script>

Когда все подгружается(При загрузке страницы), все работает прекрасно. А вот когда страница уже загружена и javascript-у больше ничего не остается разве что идти дальше и ждать новых событий но мой append как бы уже в выполненный фрагмент навешивает код который просто не просматривается и не выполняется JQ.
Вот собственно код шаблона message.html:
{% for message in messages %}
	$.growl({ title: "{{message.user}}", message: "{{ message.message }}",duration: {{message.duration}}});
{% endfor %}

Нужна ваша помощь! Буду очень признателен!))
  • Вопрос задан
  • 397 просмотров
Решения вопроса 1
abyrkov
@abyrkov
JavaScripter
Не очень понятно суть вопроса.
Насколько я понял, вы пытаетесь вставить в существующий тег новый код. Или я что-то недопонял?
Если это шаблон, то нужно его еще раз применить, если это новый скрипт, то нужен новый тег
Да, мне кажется, что ошибка в ajaxGet - это не ваша ли функция?
Замечу, что jQuery - всего лишь библиотека JavaScript. JavaScript не обрабатывает какой-нибудь тег script - jQuery не обрабатывает.
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы