无法从简单的玉形式创建uri

时间:2015-03-17 13:32:34

标签: node.js express pug

我有一个包含2个字段的简单玉石表格,我希望从这些字段中获取输入并生成符合我的API的URI。

我的玉形式是:

doctype html
html
  include head
  body
    form(method='GET', action='/' + firstName + '/' + lastName)
      | firstName:
      br
      input(type='text', name='firstName', value = firstName)
      br
      | lastName:
      br
      input(type='text', name='lastName', value = lastName)
      br
      br
      input(type='submit', value='Submit')

我希望能得到类似/John/Doe的东西,我可以用我的API处理。

相反,我得到undefined/undefined?firstName=John&lastName=Doe

关于如何解决此问题的任何想法?

2 个答案:

答案 0 :(得分:0)

我认为只有jade / html才能实现,至少不能用你想要的GET路径。当jade-interpreter遇到这条线时,firstNamelastName正在被解释:

form(method='GET', action='/' + firstName + '/' + lastName)

此时,两个变量都是未定义的。与大多数模板语言一样,jade是词法范围的,这意味着在你的情况下:这些变量以前没有被看到或定义过,因此它们是未定义的。

有关可能解决方案的一些建议:

  1. 在服务器端:将firstName和lastName视为参数,而不是特定uri路径的一部分。然后,您的服务器应评估参数字符串:firstName=John&lastName=Doe。这适用于jade / html-only。但是你必须为你的行动定义一个特定的路径。

  2. 使用javascript进行客户端 - 服务器通信。这样,您就可以操纵服务器调用的各个方面。

答案 1 :(得分:0)

我同意maze-le,你不能用Jade这样做。 Jade有服务器端模板javascript,但你需要的是客户端javascript。使用jQuery可能看起来像这样:

$(function() {
  $('form input[type=submit]').click(function(e) {
    e.preventDefault();
    firstName = $('form input[name=firstName]').val();
    lastName = $('form input[name=lastName]').val();
    window.location.href = '/' + firstName + '/' + lastName;
  });
});