FormData не включает кнопку Javascript

У меня возникла проблема с FormData , она работала пару дней назад, но теперь она не работает, она отправляет все входные данные, кроме кнопки отправки. Вот моя форма входа.

 <form action="" method="post" name="login_user"> <label for="username">Username/e-mail <span class="error" id="user-error"></span></label> <input type="text" name="username" id="username" required> <br> <label for="passwd">Password <span class="error" id="passwd-error"></span></label> <input type="password" name="passwd" id="passwd" required> <br> <p><input type="checkbox" checked name="remember"> Remember me <span class="forgot"><a href="<?php echo SITE_URL; ?>/reset">Forgotten password</a></span> </p> <input type="submit" id="login" value="Login" name="login"> <p>Don't have an account? <a href="<?php echo SITE_URL; ?>/register/">Sign up</a></p> </form> 

JS для входа в систему, использует MVC.

 //ajax login var login = document.forms.namedItem('login_user'); if (login) { login.addEventListener('submit', function (e) { if (validatePassword('passwd', 'passwd-error')) { var data = new FormData(login); var userlogin = new XMLHttpRequest(); var btn = document.getElementById('login'); btn.value = 'Login, Please wait...'; userlogin.open('POST', url + 'login/login_user_ajax', true); userlogin.onload = function (event) { if (userlogin.status == 200) { var result = JSON.parse(userlogin.responseText); if (result.results == 'success.') { alert('logged in'); //change this later } else { document.getElementById('cred-error').innerHTML = result.results; } btn.value = 'Login'; } }; userlogin.send(data); } e.preventDefault(); }, false); 

Метод входа в мой контроллер, кнопка не обнаружена.

 public function login_user_ajax() { $this->login_user(1); } private function login_user($ajax = '') { if (filter_has_var(INPUT_POST, 'login')) { $new_user = $this->model('User'); $new_user->setDb(Controller::getDb()); $new_user->set_site(SITE_URL); $user = trim(filter_input(INPUT_POST, 'username', FILTER_SANITIZE_STRING)); $passwd = trim(filter_input(INPUT_POST, 'passwd', FILTER_SANITIZE_STRING)); if ($new_user->login($user, $passwd)) { if ($ajax) { $site_data['results'] = 'success.'; echo json_encode($site_data); return true; }else { $this->redirect(SITE_URL . '/edit'); } } else { if (!$ajax){ return 'The username or password is incorrect.'; }else { $site_data['results'] = 'The username or password is incorrect.'; echo json_encode($site_data); return false; } } }else { print_r($_POST); } } 

Я получаю это, когда у меня print_r $_POST , без кнопки.

введите описание изображения здесь

Solutions Collecting From Web of "FormData не включает кнопку Javascript"

Поскольку вы фактически не используете отправную страницу по умолчанию (вместо этого вы делаете ajax), вам нужно добавить кнопку щелчка самостоятельно. Один простой способ сделать это – добавить скрытый ввод в вашу форму с именем, которое вы хотите, чтобы кнопка имела, а затем все кнопки в форме используют этот обработчик кликов:

 function clickHandler() { this.form.theHiddenInput.value = this.value; } 

Таким образом, если для отправки формы использовалась кнопка, обработчик кнопки устанавливает значение скрытого ввода до submit .