2012-05-08 18 views
1

我正在使用Express通過res.render在ajax調用上呈現Jade模板。問題是我想回傳一些JSON變量或JavaScript對象以及HTML。通過AJAX呈現Jade模板並試圖通過/訪問與HTML分開的數據

這是可能在一個優雅的方式或所有?我知道我可以通過一個腳本標記與HTML,但我不知道如何可以直接在'數據'響應中訪問這些值。

這裏舉例:

- var someNumber = 89 
h1 Hello World 
li #{someNumber} 

通常在一個Ajax這個模板的res.render()調用你還是會回到

<h1> Hello Wolrd </h1> 
<li> 89 </li> 

所有HTML格式。

如何訪問回調中的HTML節點之一?理想情況下使用jQuery選擇器,比如$('h1 li')。我需要訪問回撥中的號碼,但它似乎並沒有抓住它。我正在考慮監聽器或者添加延遲,或者我需要將它分配給一個字符串並解析出來。

+0

我不明白。你可以發佈你使用的代碼嗎? –

+0

@MarkLinus更新更清晰。 – codeisforeva

回答

1

不完全確定我明白這個問題。但是,要通過Jade將JSON直接傳遞給瀏覽器。在你的路線的邏輯,你需要這樣的東西:

res.render "test", 
    title: "Test" 
    debugJson: { 
     'Read Folder Result' : result, 
     'HTTP' : { 
     'Req URL' : req.url, 
     'Req Query' : req.query, 
     'Req User' : req.user, 
     'Req Headers' : req.headers, 
     'Req' : req, 
     'Res' : res 
     } 
    } 

(對不起,那是在CoffeeScript中,而不是JS)

而且在玉石的模板,你需要有一些像(在腳本中):

var myJson = !{JSON.stringify(debugJson)}; 

它會將JSON直接傳遞到腳本中。如果你想直接進入DOM,像這樣:

#debug !{JSON.stringify(debugJson)} 

這將轉儲到一個div。

但是,如果您只是想在Jade模板中處理它,您可以簡單地在Jade中使用循環。看到這previous StackOverflow question如何做到這一點。

+0

好的,所以無論如何我必須將它作爲腳本var傳遞。這正是我試圖避免必須做的。也許多個請求會是更好的解決方案,但我恐怕不會。 – codeisforeva

+0

誠實地說,將JSON傳遞到瀏覽器的最佳方式並不是這種方式。只要使用res.json(),如果你只是需要那件。 – codeisforeva