странные django-template-jquery-javascript shenanigans! - PullRequest
0 голосов
/ 19 апреля 2011

У меня есть следующее:

return render_to_response('a.html', {'b': 3}, context_instance=...)

в a.html:

{{ b }}

выходы 3

{% url app.views.something b %}

дает мне:

/something/3/

но

<script type="text/javascript">
    $(document).ready(function() {
        alert('{{ b }}');
    });
</script>

всплывает диалоговое окно с предупреждением 3. Но если вы просматриваете источник, вы получаете:

<script type="text/javascript">
    $(document).ready(function() {
        alert('0');
    });
</script>

Если я пытаюсь использовать {{ b }} в jquery где-либо еще, он просто возвращает мне «0».

То же самое происходит, если я делаю следующее и проверяю источник до появления всплывающего окна

<script type="text/javascript">
    setTimeout("alert('{{ b }}')",2000);
<script>

Во всплывающем окне указано «3», а в источнике - «0».

У кого-нибудь было что-нибудь подобное раньше?

EDIT:

Я использовал HTTP-лису, чтобы сделать вывод, что это проблема AJAX. Джанго возвращает «3» в браузер.

Хотя приведенный выше пример кода является чрезмерным упрощением. В основном я обновляю div (родительский объект content_ct), в котором используется код, с помощью команды jquery ajax.

$('#ctSelection').change(function() {

    if($('#ctSelection option:selected').val()=='1') {
        $.get('/company/ct/1/', function(data) {
            $('#content_ct').parent().html(data);
        });
    }

    if($('#ctSelection option:selected').val()=='2') {
        $.get('/company/ct/2/', function(data) {
            $('#content_ct').parent().html(data);
        });
    }

});

EDIT

Я полагаю, что это происходит из-за перекрывающихся обработчиков jquery и всегда использует первый в стеке

Ответы [ 2 ]

0 голосов
/ 05 мая 2011

Я не нашел решения этой проблемы, но поскольку django возвращает правильный код, это должно быть проблемой с jquery, который я расширил здесь .

РЕДАКТИРОВАТЬ Я наконец-то переключил фреймворки на додзё , потому что я не мог обойти эту проблему

0 голосов
/ 19 апреля 2011

Это опечатка в закрывающем теге javascript, она должна быть:

</script>

вместо

<script>

Кроме этого, я пробовал ваш javascript с jQuery 1.5 и Django1.3 работает нормально.

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