2016-05-02 2 views
0

У меня есть форма:Как создать оповещение для пользователя в узле?

<form class="form-inline" action="/" method="post"> 
    <div class="form-group"> 
     <label class="sr-only">Username</label> 
     <input name="username" type="text" class="form-control" placeholder="Desired Username"> 
    </div> 
    <br> 
    <br> 
    <div class="form-group"> 
     <label class="sr-only" for="exampleInputEmail3">Email address</label> 
     <input name="email" type="email" class="form-control" id="exampleInputEmail3" placeholder="Email"> 
    </div> 
    <br> 
    <br> 
    <div class="form-group"> 
     <label class="sr-only" for="exampleInputPassword3">Password</label> 
     <input name="password" type="password" class="form-control" id="exampleInputPassword3" placeholder="Password"> 
    </div> 
    <br> 
    <br> 
    <button type="submit" class="btn btn-default">Register</button> 
</form> 

Вот мой app.js:

app.post('/', function(req, res) { 

    var user = new Parse.User(); 
    user.set("username", req.body.username); 
    user.set("password", req.body.password); 
    user.set("email", req.body.email); 

    user.signUp(null, { 
    success: function(user) { 
     // Hooray! Let them use the app now. 
     console.log(user); 
     res.redirect('/#register'); 
    }, 
    error: function(user, error) { 
     // Show the error message somewhere and let the user try again. 
     console.log(error.message); 
     res.redirect('/#register'); 

    } 
    }); 

}); 

Все функционально работает, я просто хочу знать, как я могу показать сообщение, если пользователь был успешно подписан или нет. Я также хотел бы знать, является ли это правильным способом обработки формы.

+0

Вы должны позвонить 'res.send', чтобы отправить сообщение об успешном завершении к переднему концу и обрабатывать переадресацию оттуда. –

+0

Можете ли вы привести пример? – user2975275

+0

Проверьте мой ответ. –

ответ

0

Образуйте статус успеха после signUp.

success: function(user) { 
    // Hooray! Let them use the app now. 
    res.redirect('/#register'); 
} 

При успешной регистрации вы перенаправляетесь на страницу регистрации/#. Вы можете показать предупреждение, когда эта страница будет загружена.

+0

i try alert(); но он не работает – user2975275

+0

'alert' не существует на стороне сервера, он существует только в браузере. –

+0

, но моя функция находится на стороне сервера. как я могу все-таки предупредить? – user2975275

0

Фронтальный JS:

Вместо представления форме обычным способом, мы будем использовать jQuery-AJAX для этой цели:


Attach jQuery к вашей веб-страницы, используя приведенную ниже <script> тег в вашей веб-странице <head> тег:

<script type="text/javascript" src="https://cdnjs.cloudflare.com/ajax/libs/jquery/2.2.3/jquery.min.js"></script> 

Отслеживать в том же <head> со следующим:

<script type="text/javascript"> 

$('.form-inline').submit(function(event) { 

    $.ajax({ 
    type: "POST", // the request type 
    url: "/", // the URL where your form data will be sent 
    data: $(this).serialize(), // the form data to be sent 
    success: function(data) { // this function will be called when you do a res.send from the back-end 

     alert(data); // although I would suggest you use a modal or some other solution to display your success message 

     window.location.href = your_redirect_url; // this will redirect the user to your /#register url 

    } 
    }); 

    event.preventDefault(); // to prevent the form from being submitted the usual way 

}); 

</script> 

Примечание: Это просто пример, чтобы помочь вам начать работу.


Back-конец JS:

 
app.post('/', function(req, res) { 

    ... 

    user.signUp(null, { 
    success: function(user) { 

     res.send(your_success_message); // send your success message or status or result object using this method, it will call the success function of your ajax object on the front-end 
    }, 
    error: function(user, error) { 

     res.send(your_error_message); // similarly send the error message, or status, or object. 
    } 
    }); 
}); 
+0

Возможно ли это без Ajax? Как я могу сделать это с помощью простого узла и html? – user2975275

+0

Если вы не хотите использовать Ajax, вам нужно будет вернуться к ['XMLHttpRequest'] (https://developer.mozilla.org/en-US/docs/Web/API/XMLHttpRequest), который является родным в браузере Javascript. Но Ajax гораздо проще в использовании. –

+0

Но если вы хотите отобразить предупреждающее сообщение на той же странице, что и форма, то использование Ajax или XMLHttpRequest - единственный способ сделать это, насколько я знаю. –

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