我是新手! 前台用的是extjs,做的一个简单的登陆界面 代码: Ext.Loader.setConfig({ enabled: true }); Ext.Loader.setPath(‘Ext.ux’, ‘/ext-4.2.1.883/examples/ux’);
Ext.require([
//'Ext.form.*',
//'Ext.layout.container.Column',
//'Ext.tab.Panel'
'*',
'Ext.ux.DataTip'
]);
Ext.onReady(function() {
Ext.QuickTips.init();
var required = '<span style="color:red;font-weight:bold" data-qtip="Required">*</span>';
var win = Ext.create('widget.window', {
title: '管理员登录',
header: {
titlePosition: 2,
titleAlign: 'center'
},
width: 350,
minWidth: 350,
closable: false,
items: [{
xtype: 'form',
layout: 'form',
collapsible: false,
collapse: false,
id: 'simpleForm',
url: '/support/adminLogin',
frame: true,
bodyPadding: '0',
width: 340,
border:false,
fieldDefaults: {
msgTarget: 'side',
labelWidth: 55
},
plugins: {
ptype: 'datatip'
},
defaultType: 'textfield',
items: [{
fieldLabel: '用户名',
afterLabelTextTpl: required,
name: 'adminname',
allowBlank: false,
tooltip: '请输入管理员名称' ,
width:240
},{
fieldLabel: '密码',
afterLabelTextTpl: required,
name: 'password',
allowBlank: false,
tooltip: '请输入管理员密码' ,
inputType : "password"
}],
buttons: [{
text: '登录',
handler: function() {
this.up('form').getForm().isValid();
this.up('form').getForm().submit();
}
}]
}]
}).show();
});
可以点击提交的!
后端的代码如下:
index.js
////////////////////////后台系统///////////////////////////////////
app.get("/support" , function(req , res){
if(req.session.admin == null)
res.redirect("/support/adminLogin") ;
else
res.redirect("/support/index") ;
});
app.get("/support/index" , function(req , res){
res.render(“support/index” , {title : “后台管理系统”}) ;
});
app.get(’/support/adminLogout’ , function(req , res){
req.session.admin = null ;
req.flash(“success” , “退出成功!”) ;
res.redirect("/support/adminLogin") ;
});
app.get("/support/adminLogin" , function(req , res){
res.render(“support/adminLogin” , {title : “后台管理系统”}) ;
});
app.post(’/support/adminLogin’ , function(req , res){
var adminname = req.body.adminname ;
var md5 = crypto.createHash(‘md5’) ;
var password = md5.update(req.body.password).digest(“base64”);
Admin.get(adminname , function(err , admin){
if(!admin)
{
req.flash(‘error’ , “管理员不存在!”) ;
return res.redirect("/support/adminLogin") ;
}
if(admin.password != password)
{
req.flash(error , “管理员密码输入错误!”) ;
return res.redirect("/support/adminLogin") ;
}
req.session.admin = admin ;
req.flash(“success” , “登录成功!”) ;
return res.redirect("/support/index") ;
});
});
admin.js
var mongoDoc = require(’./db’) ; var mongoose = mongoDoc.mongoose ; var db = mongoDoc.db ; var AdminSchema = mongoose.Schema({ name : { type : String } , password : { type : String } , email : { type : String } }) ; var AdminModel = db.model(“Admin” , AdminSchema) ; var Admin = function(){} Admin.prototype.get = function(adminname , callback){ AdminModel.findOne({“name” : adminname},"" , function(err , admin){ if(err) return callback(err) ; callback(err , admin) ; }) ; } ; module.exports = new Admin() ;
这个只是部分代码: 当我点击登录提交的时候,代码是可以运行的,从mongo中查到了这个admin,问题来了,运行到return res.redirect(’/support/index’);的时候,无法从adminLogin跳转到index页面
错误: 2 requests ❘ 385B transferred /support/adminLogin POST 302 Moved Temporarily text/plain ext-all-debug.js:32379 Script 252B 0B 11ms 11ms 11ms0ms
/support/index GET 304 Not Modified text/html http://127.0.0.1:3000/support/adminLogin Redirect 133B 3.76KB 13ms 12ms 12ms
网上找不到,估摸着是跳转无效,extjs是ajax的,提交的时候等待返回的问题
求各位帮小弟解答一下 不知各位能否看懂
〉 extjs是ajax的,提交的时候等待返回的问题
ajax 返回的要根据返回值,在客户端跳转
window.location = newUrl;
这样处理起来岂不是很麻烦,能否中断前台的ajax连接利用nodejs强制跳转,就像java似的 利用ajax提交数据,判断成功后后台跳转
@huanghaiyang ajax 是单页状态交换数据。能换页,就不是ajax了。