2016-11-07 34 views
1

展望更改玉赋值的变量与阿贾克斯后的结果,这样的页面的翡翠循环利用的新数据(更新只涉及到循环的DOM的部分,而不是渲染翻页)。阿贾克斯结果变化玉分配变量

route.js

router.post('/initial', function(req, res) { 
    res.render('/page', {data: data}) 
}) 
router.post('/refresh', function(req, res) { 
    res.send(newdata) 
}) 

index.jade

block content 
    - var fluxdata = data 
    each item in fluxdata 
    span= item 
    div#button 

client.js

$(document).on('click', '#button', function() { 
    $.post('/refresh', function(newdata) { 
    var fluxdata = newdata 
    }) 
} 

我尝试了谐音,但不知道我在正确的轨道上。看了一下周围的互联网和stackoverflow了一会儿,并找不到关于翡翠作业的类似问题。

回答

1
// Jade template 
block content 
    div(class="content") 
     - var fluxdata = data 
     each item in fluxdata 
      span #{item.id} : #{item.username} 
    div 
     button(id="add") POST Data 

after your template is rendered your html will look like this 


// HTML rendered 
<div class="content"> 
    <span>1 : Yves</span> 
    <span>2 : Jason</span> 
</div> 
<div> 
    <button id="add">POST DATA</button> 
</div> 

// backend code 

var users = [ 
    { 
     username: "Yves", 
     id: 1 
    }, 
    { 
     username: "Jason", 
     id: 2 
    } 
] 

router.get("/initial", function(request, responser) { 
    response.render("index", { data: users}) 
}) 


router.post("/refresh", function(request, responser) { 
    users.push({username: "Alex",id: 1}) 

    response.json({ data: users}) 
}) 



// Your jquery code 

$("#button").on('click', function(event){ 
    event.preventDefault() 
    $.post('/refesh', function(data) { 
     $(".content").html("") 
     for(var user in data) { 
      var span = $("<span>")   
      span.text(user.id + ": " + user.username) 
      $(".content").append(span) 
     } 

    }); 

}) 
0
in your get "/initial" route handler, your are rendering the 


res.render("/page", {data : data }) 

before the template name you musn't put the/and the template in witch you are trying to use data that at push to the view is index.jade 


router.post('/initial', function(req, res) { 
    res.render('index', {data: data}) 
}) 
+0

yvesdaxmaz,感谢指出了这一点。我斩断我的应用程序,使问题变得更简单,并且你是正确的,我需要在没有/的情况下呈现索引。虽然你的回答并不回答这个问题。对于如何正确更改Jade变量赋值,您有任何建议吗? – JasonA

+0

当你把你的Ajax请求,该模板在那个时候你呈现你有没有玉模板中,有一个简单的HTML页面。你不能将你的ajax的结果替换为你的模板。你必须以你操纵结果的方式编写你的javascript,并为你的dom添加一些标记。 – yvesdaxmaz

+0

和该请求被发送必须返回数据的URL,而不是像你这样的模板,在你的代码一样。还有些东西一样JSON – yvesdaxmaz