2016-11-07 8 views
1

翡翠割り当て変数をajax投稿の結果で変更して、ページの玉ループが新しいデータを利用するようにします(ループに関連するdomの部分のみを更新し、ページオーバー)。私はパーシャルを試してみたAjax結果の変更翡翠代入変数

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リクエストを送信すると、あなたはjadeテンプレートを持っていないその時にテンプレートがレンダリングされ、単純なhtmlページがあります。あなたのajaxの結果をテンプレートに置き換えることはできません。結果を操作してdomにマークアップを追加するという方法でJavaScriptを書く必要があります。 – yvesdaxmaz

+0

であり、要求が送信されるURLは、コード内で行ったようなテンプレートではなく、データを返さなければなりません。 jsonのようなものを返す – yvesdaxmaz