我正在使用mysql从我的node.js中进行基本登录。
在我的代码示例中,如果会话正确,请将我发送到一个名为“ home”的html页面,但是在这种情况下,我需要在完成会话后,我的Javascript客户端发送一条警报,告知您已登录或者其用户不正确。如果正确,请将“正确”一词保存在以后可在我的javascript文件中使用的变量中
我如何发送执行信息,以便我的javascript文件发送警报?
office::office(building *b, int on, int m): office_number(on), current_visitors(0), _f(m){
No = b->get_space_size('o');
cout << "Office number: " << office_number << "\thas been created\n";
}
int office::get_vis_count() const{
return current_visitors;
}
int office::has_space() const{
return (current_visitors < No);
}
int office::get_numb() const{
return office_number;
}
int office::__enter(Visitor * visitor){
if(visitor == NULL) return -1;
if(has_space()){
if(!visitor->__done()){
if((visitor->get_office() == office_number)){
visitors.push_back(visitor);
cout << "Entering office " << _f << "-" << office_number << "\t: ";
visitors[current_visitors]->print_v();
current_visitors++;
return 1;
}else{
return 0;
}
}else{
return 1;
}
}else{
cout << "Please, wait outside for entrance in office number: " << office_number << endl;
return 0;
}
}
Visitor* office::__exit(int index){
if (visitors[index]->__done()){
Visitor *nav;
nav = visitors[index];
visitors.erase(visitors.begin() + index);
current_visitors--;
return nav;
}else{
return NULL;
}
}
Visitor* office::done(){
if(current_visitors){
int random;
random = rand() % current_visitors;
visitors[random]->__set_done();
cout << "Exiting office " << _f << "-" << office_number << "\t: ";
visitors[random]->print_v();
return __exit(random);
}else{
return NULL;
}
}
void office::print() const{
if(current_visitors != 0){
cout << "Floor: " << _f << endl;
cout << "Office: " << office_number << endl;
for (int i = 0; i < No; i++)
{
visitors[i]->print_v();
}
cout << endl;
}
}
office::~office(){
cout << "End of the work!\n";
}
谢谢
答案 0 :(得分:1)
这是您可以使用的肮脏技巧,但是它将重新渲染ejs视图:
在服务器端(使用express):
app.get('/route', function (req, res) {
res.render('view', { errormessage: 'your message' });
});
在客户端(使用ejs模板):
1。在ejs模板上创建一个不可见的div,以访问服务器发送的ejs变量:
HTML:
<div id='status' class='invisible'><%= errormessage %></div>
CSS:
.invisible {
display: none;
visibility: hidden;
}
2。在ejs末尾添加此js脚本(jquery)以访问此变量并创建警报:
<script>
if($('div#status').text()!='')
{
alert($('div#status').text());
}
</script>
答案 1 :(得分:0)
无法通过从服务器发送指令直接在客户端执行代码。您要做的是发送信息,并在客户端上正确解释。
例如,您可以使用会话
if (results.length > 0) {
request.session.loggedin = true;
request.session.username = username;
request.session.makeAlert = true;
response.redirect('/home');
}
在/ home路线中
app.get('/home', function(req, res){
const dataYouSend = {};
if (req.session.makeAlert) dataYouSend.makeAlert = true;
res.send(dataYouSend);
});
最后在/ home路由中的JS代码中,使用您的数据
fetch('adress/to/your/home')
.then(response => {
// It may not be precisely this, I don't know how you send data
if (response.makeAlert) alert("Alert!!!");
})
.catch(err => {
if(err) console.log(err);
});
答案 2 :(得分:0)
在服务器端(Express中间件):
if(userNotExist) return res.status(401).end('Incorrect Username and/or Password!');
在客户端处理。
角度:-
$http().....
.error(function(data, status) {
console.error('Repos error', status, data);//"Repos error" 500 "User already exists."
});
jQuery:-
$.ajax({
type: "post",
url: url,
success: function (data, text) {
//success code here.
},
error: function (request, status, error) {
//error handling here.
}
});