无法从简单的玉石形式创建 uri
Cannot create uri from simple jade form
我有一个带有 2 个字段的简单 jade 表单,我想从这些字段中获取输入并生成符合我的 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
关于如何解决这个问题的任何想法?
我认为只用 jade / html 是不可能的,至少不能用你想要的 GET 路径。 firstName
和 lastName
正在被解释,当 jade-interpreter 到达以下行时:
form(method='GET', action='/' + firstName + '/' + lastName)
此时,两个变量都未定义。与大多数模板语言一样,jade 是词法范围的,这意味着在您的情况下:这些变量以前没有见过或定义过,因此它们是未定义的。
一些可能的解决方案建议:
在服务器端:将 firstName 和 lastName 视为参数,而不是特定 uri 路径的一部分。然后您的服务器应该评估参数字符串:firstName=John&lastName=Doe
。这适用于 jade/html-only。但是你必须为你的动作定义一个特定的路径。
使用javascript进行客户端-服务器通信。这样,您就可以操纵服务器调用的各个方面。
我同意 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;
});
});
我有一个带有 2 个字段的简单 jade 表单,我想从这些字段中获取输入并生成符合我的 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
关于如何解决这个问题的任何想法?
我认为只用 jade / html 是不可能的,至少不能用你想要的 GET 路径。 firstName
和 lastName
正在被解释,当 jade-interpreter 到达以下行时:
form(method='GET', action='/' + firstName + '/' + lastName)
此时,两个变量都未定义。与大多数模板语言一样,jade 是词法范围的,这意味着在您的情况下:这些变量以前没有见过或定义过,因此它们是未定义的。
一些可能的解决方案建议:
在服务器端:将 firstName 和 lastName 视为参数,而不是特定 uri 路径的一部分。然后您的服务器应该评估参数字符串:
firstName=John&lastName=Doe
。这适用于 jade/html-only。但是你必须为你的动作定义一个特定的路径。使用javascript进行客户端-服务器通信。这样,您就可以操纵服务器调用的各个方面。
我同意 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;
});
});