2012-05-08 2 views
1

Я делаю шаблон Jade для вызова ajax через res.render с помощью Express. Проблема в том, что я хочу передать некоторые объекты JSON или Javascript вместе с HTML.Rendering Jade template через AJAX и пытается передать/получить доступ к данным отдельно от HTML.

Возможно ли это элегантным способом или вообще? Я знаю, что могу передать тег сценария вместе с HTML, но я не уверен, как я могу получить доступ к этим значениям непосредственно в ответе «данные».

Пример здесь:

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

Обычно в res.render() этого шаблона на качестве AJAX позвонить, вы получите обратно

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

Все в формате HTML.

Как получить доступ к одному из узлов HTML в обратном вызове? В идеале с помощью селектора jQuery, такого как $ ('h1 li'). Мне нужен доступ к номеру в обратном вызове, но он, похоже, не захватывает его. Я думаю о слушателе или добавлении задержки, или, может быть, мне нужно назначить его строке и проанализировать ее.

+0

Я не понял. Не могли бы вы разместить код, который используете? –

+0

@MarkLinus обновлен, чтобы быть более четким. – codeisforeva

ответ

1

Не совсем уверен, что я понимаю вопрос. Однако, чтобы передать JSON прямо в браузер через Jade. В вашей логике маршрута вам нужно что-то вроде:

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

Смежные вопросы