2015-03-17 2 views
0

У меня есть простая нефритовая форма с двумя полями, и я хочу получить данные из этих полей и сгенерировать URI, который соответствует моему 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

Любые идеи о том, как я могу это исправить?

ответ

0

Я согласен с лабиринтом, вы не можете сделать это с Джейд. 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; 
    }); 
}); 
+0

Благодарим за ответ, так что это должно сработать, если я просто создаю небольшой файл javascript с вышеуказанным кодом и добавлю его в Jade? – doctor667

+0

Да, это должно быть. Но вам нужно добавить jQuery lib: '' –

+0

Это, похоже, не работает для меня, хотя логика кажется правильной. Когда я заполняю формы и нажимаю кнопку, ничего не происходит. Я также попытался использовать 'window.location.replace' и' window.location.assign', и это не решило его. Думаю, мне придется немного почистить мой jquery. – doctor667

0

Я не думаю, что это возможно сделать только с помощью jade/html, по крайней мере, с GET-контуром, который вы хотите. firstName и lastName являются неоспоримым истолковано, когда Джейд-интерпретатор попадает в линию:

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

В это время обе переменные не определены. Как и в большинстве шаблонов, jade лексически охвачен, что означает в вашем случае: эти переменные havent были замечены или определены раньше, поэтому они не определены.

Некоторые предложения относительно возможных решений:

  1. На стороне сервера: Лечить ПгвЬЫате и LastName, как paramters, а не части конкретного Ури пути. Затем ваш сервер должен оценить param-строку: firstName=John&lastName=Doe. Это работает только с jade/html-only. Но вы должны определить конкретный путь для своего действия.

  2. Используйте javascript для связи между клиентом и сервером. Таким образом, вы можете манипулировать всеми аспектами своих серверных вызовов.

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