【问题标题】:weird django-template-jquery-javascript shenanigans!奇怪的 django-template-jquery-javascript 恶作剧!
【发布时间】:2011-08-08 19:17:33
【问题描述】:

我有以下几点:

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>

如果我尝试在 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 重叠处理程序并且总是使用堆栈中的第一个处理程序

【问题讨论】:

  • 嗨。您的脚本标签在 a.html 中吗?还是它们在单独的 .js 文件中?
  • 嗯。这很奇怪。如果你这样做会发生什么: var b = '{{ b }}'; ?
  • 我这样做了,然后alert'ed 输出和输出是'3',但var b 在源中是'0'
  • 这很奇怪!我对此没有任何解释。我在许多项目中以完全相同的方式为服务器端值创建了变量。我不确定是什么导致您的模板表现得那样。
  • 如果警报显示 3,那么问题出在您获取源代码的方式上。你是怎么得到它的?

标签: javascript jquery django django-templates


【解决方案1】:

这是您的 javascript 结束标记中的错字吗,应该是:

</script>

而不是

<script>

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

【讨论】:

    【解决方案2】:

    我不喜欢这个问题的解决方案,但是因为 django 正在返回正确的代码,所以它一定是 jquery 的问题,我在 here 上进行了扩展。

    编辑 我终于将框架切换到dojo,因为我无法解决这个问题

    【讨论】:

      猜你喜欢
      • 2011-07-27
      • 2011-10-09
      • 2015-01-13
      • 1970-01-01
      • 2011-07-31
      • 2010-09-23
      • 1970-01-01
      • 2019-09-15
      • 1970-01-01
      相关资源
      最近更新 更多