奇怪的django-template-jquery-javascript shenanigans!

时间:2011-04-19 15:36:14

标签: javascript jquery django django-templates

我有以下内容:

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>

弹出一个警告对话框,但是如果您查看来源:

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

如果我尝试在其他地方的jquery中使用{{ b }}它只会让我'0'。

如果我执行以下操作并在弹出窗口到达之前检查源

,则会发生同样的情况
<script type="text/javascript">
    setTimeout("alert('{{ b }}')",2000);
<script>

弹出窗口显示'3',但消息来源显示'0'。

以前有人有这样的事吗?

修改

我使用HTTP fox来推断这是一个AJAX问题。 Django正在向浏览器返回'3'。

虽然我上面提供的示例代码是过度简化。我基本上做的是使用jquery ajax命令刷新代码所在的div(content_ct的父级)。

$('#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);
        });
    }

});

修改

我认为这是由于jquery重叠处理程序并且始终使用堆栈中的第一个

2 个答案:

答案 0 :(得分:0)

这是你的javascript结束标记中的拼写错误,它应该是:

</script>

而不是

<script>

除此之外,我尝试使用jQuery 1.5和Django 1.3的javascript,它运行正常。

答案 1 :(得分:0)

我还没有喜欢这个问题的解决方案,但因为django正在返回正确的代码,所以我必须在here上扩展jquery的问题。

修改 我终于将框架切换到dojo,因为我找不到这个问题