extjs如何提交信息后nodejs进行跳转
发布于 11 年前 作者 huanghaiyang 10964 次浏览 最后一次编辑是 8 年前

我是新手! 前台用的是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的,提交的时候等待返回的问题

求各位帮小弟解答一下 不知各位能否看懂

3 回复

〉 extjs是ajax的,提交的时候等待返回的问题

ajax 返回的要根据返回值,在客户端跳转

window.location = newUrl;

这样处理起来岂不是很麻烦,能否中断前台的ajax连接利用nodejs强制跳转,就像java似的 利用ajax提交数据,判断成功后后台跳转

@huanghaiyang ajax 是单页状态交换数据。能换页,就不是ajax了。

回到顶部