首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Django模板不对成功的AJAX get请求重新呈现。

问Django模板不对成功的AJAX get请求重新呈现。
EN

Stack Overflow用户
提问于 2017-04-18 13:37:58
回答 1查看 885关注 0票数 0

我编写了一个非常简单的ajax代码,它发出一个get请求,它期望django模板值作为响应。因此,当我尝试执行这个ajax代码时,在网络下的chrome中,我可以看到get请求是成功的,在网络下的预览部分,我可以看到我所期望的模板值,但是网页保持不变,不会再次呈现。

我的看法是:

代码语言:javascript
复制
def test(request,id=1):
    return render(request,'test.html',{'num':id,'next':9})

我的模板和ajax代码:

代码语言:javascript
复制
<script src='https://code.jquery.com/jquery-3.2.1.min.js'></script>
<p>{{num}}</p>
<button onclick='test({{next}})'>Test</button>

<script>
function test(next){
    $.ajax({
        url:'/test/'+next,
        type: 'GET',
        success: function(){
            console.log('done');
        }
    });
}
</script>

当我开始使用'/test/66‘时,请检查我的问题的这个示例图像,点击按钮,得到所需的响应,仍然没有改变。

​

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-04-18 13:47:24

您正在混合服务器端呈现(DTL)和客户端(javascript)。一旦django呈现了模板,您的javascript就无法访问服务器端变量{ text }。

你要做的是:

SSR前模板

代码语言:javascript
复制
<div id="content">
  <p>{{num}}</p>
  <button onclick='test({{next}})'>Test</button>
</div>

<script>
    function test(next){
        $.ajax({
            url:'/test/'+next,
            type: 'GET',
            success: function(data){
                document.querySelector('#content p').innerHTML(data);
            }
        });
    }
    </script>

SSR之后的模板(像这样的东西,你就明白了)

代码语言:javascript
复制
<div id="content">
  <p>66</p>
  <button onclick='test(66)'>Test</button>
</div>

<script>
function test(next){
    $.ajax({
        url:'/test/'+next,
        type: 'GET',
        success: function(data){
            document.querySelector('#content p').innerHTML(data)
        }
    });
}
</script>
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/43473835

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档