2016-05-19 1 views
0

У меня есть этот код в router.post, который будет проверять мою форму ввода с помощью AJAX:Неожиданное поведение в экспресс-маршрутизатор проверки формы

if(req.body.firstname === '' || req.body.firstname !== req.body.firstname.match(/\D+/g)[0]) { 
    console.log('AJAX ERROR: Firstname is empty and/or have a number.'); 
} 
else if(req.body.captcha !== req.body.captcha.match(/^kettő$/igm) || 
     req.body.captcha !== req.body.captcha.match(/^ketto$/igm) || 
     req.body.captcha !== req.body.captcha.match(/^two$/igm)) { 
    console.log('AJAX ERROR: captcha is empty and/or the entered value is invalid.'); 
} 
else { 
    console.log('AJAX ERROR'); 
}; 

Ожидаемый результат:

  • если firstname пуста, чем ошибка выброса в console.log
  • если firstname имеет номера, кроме ошибки выброса в console.log
  • если captcha не равен kettő, ketto, Kettő, Ketto, KETTŐ, KETTO, two, Two, TWO ответов, чем ошибка выброса в console.log
  • Другое условие, если эти требования не выполняются, введите else.

Опытная поведение:

  • captcha всегда бросали ошибку console.log после того, когда firstname проверяется. firstname работает должным образом.

Я также испытывают серьезные задержки после многих повторного запроса в строке со следующей ошибкой консоли: main-vanilla.min.js:1 POST http://127.0.0.1:3000/hu/form net::ERR_EMPTY_RESPONSE

ответ

1
else if(req.body.captcha !== req.body.captcha.match(/^kettő$/igm) || 
     req.body.captcha !== req.body.captcha.match(/^ketto$/igm) || 
     req.body.captcha !== req.body.captcha.match(/^two$/igm)) { 
    console.log('AJAX ERROR: captcha is empty and/or the entered value is invalid.'); 
} 

имеет пару вещей неправильно с ним:

  1. хит отсутствует [0] после .match(), который у вас есть в firstname.match(). match() возвращает массив, поэтому вам нужно выбрать первый элемент.

  2. В настоящее время логика говорит, что если один из них не соответствует, а затем выбросить ошибку. То, что вы на самом деле хотите, - если ни одно из этих совпадений не выдаст ошибку. Для этого вы должны использовать && вместо ||.

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