Есть несколько проблем, которые я вижу там
Во-первых, данные, которые вы отправляете, имеют неправильный формат, а также создание строки json, а затем их синтаксический анализ для объекта не требуется, если вы просто можете создать объект в первую очередь.
var formData = {
"username": $('input[name="username"]').val(),
"password": $('input[name="password"]').val()
};
И, во-вторых, поскольку ваши данные имеют неправильный формат, $validation->passed()
будет ложным, и вы не вернете данные в запросе, который ожидает json и выдаст ошибку, которую вы видите, когда она не будет получена.
if ($validation->passed())
{
$user = new User();
$login = $user->loginEmail($username, $password, $remember);
$response = array('loggedIn'=>$login);
echo json_encode($response, JSON_PRETTY_PRINT );
}
else{
echo json_encode(array('loggedIn'=>false), JSON_PRETTY_PRINT );
}
Кроме того, селектор для вашего обработчика отправки формы неправильный, это должно быть что-то вроде
$(document).on( 'submit', "[name=login]", function(event){