奇怪的django-template-jquery-javascript恶作剧

weird django-template-jquery-javascript shenanigans!

本文关键字:恶作剧 django-template-jquery-javascript      更新时间:2023-09-26

我有以下内容:

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

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

如果我尝试在jquery中使用{{ b }}在其他任何地方它只是返回我'0'。

如果我执行以下操作并在弹出窗口到达之前检查源,也会发生相同的情况

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

弹出窗口显示"3",而源文件显示"0"。

以前有人遇到过这样的事情吗?

编辑:

我使用HTTP fox来推断这是一个AJAX问题。Django返回'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);
        });
    }
});

编辑

我认为这是由于jquery重叠处理程序,总是使用堆栈中的第一个

你的javascript结束标签是不是打错了,应该是:

</script>

代替

<script>

除此之外,我用jQuery 1.5和Django 1.3尝试了你的javascript,它工作得很好。

我还没有找到解决这个问题的方法,但是因为django返回了正确的代码,所以它一定是jquery的问题,我在这里展开了。

编辑我最终将框架切换到dojo,因为我找不到解决这个问题的方法