用Struts2+extjs做web项目,后台返回success为false,Ext.ajax.request也用调用success方法

先看一下我的目录结构js代码functiongetAdmin(){Ext.Ajax.request({url:'admin!select',method:'post',w... 先看一下我的目录结构

js代码

function getAdmin(){
Ext.Ajax.request({
url:'admin!select',
method:'post',
waitMsg:'数据加载中,请稍后....',
success:function(response,opts){
var obj=Ext.decode(response.responseText);
alert('成功'+obj.success);
},
failure:function(response,opts){
var obj=Ext.decode(response.responseText);
alert(obj.result);

}
})
}

java代码

public String select(){
if(session.get("admin")!=null&&((String)session.get("admin")).length()!=0){
sql="select userId,userName,passWd from admin";
try {
rs=Dao.initConnection().createStatement().executeQuery(sql);
infoList=new ArrayList<AdminInfo>();
while(rs.next()){
AdminInfo adminInfo=new AdminInfo();
adminInfo.setUserId(rs.getString(1));
adminInfo.setUserName(rs.getString(2));
adminInfo.setPassWd(rs.getString(3));
infoList.add(adminInfo);
}
success=true;
} catch (Exception e) {
success=false;
Msg="数据加载失败,请重新加载";

e.printStackTrace();
}
result="success";
}else{
success=false;
Msg="对不起,你还没有登录,请先登录";
result="input";
}
System.out.println("success="+success+"result="+result+":msg"+Msg+":session="+session);
return result;
}

我的本意是在admin.jsp页面访问后台的时候,首先验证用户是否登录,如果登录才可能 进行一步,没有登录后返回登录页面,

如果是从index.jsp页面通过正常的登录到达admin.jsp的话,这是行得通的,但是如果直接访问/admin/admin.jsp的话,即使服务器返回的success=false,它仍会执行s

js代码中 ext.ajax,request({})中的success方法 ,

请问各个大虾 这是怎么回事
项目结构
通过正常登录 好像也不行,总是执行success
展开
 我来答
magic_824
2011-03-31 · 超过13用户采纳过TA的回答
知道答主
回答量:29
采纳率:0%
帮助的人:37.3万
展开全部
function getAdmin(){
Ext.Ajax.request({
url:'admin!select',
method:'post',
waitMsg:'数据加载中,请稍后....',
success:function(response,opts){
var obj=Ext.decode(response.responseText);
alert('成功'+obj.success);
},
failure:function(response,opts){
var obj=Ext.decode(response.responseText);
alert(obj.result);

}
})
}

这里的success是表示你的服务器响应状态值为200.即表示服务器成功响应。不管你响应给客户端的内容是什么,只要响应成功就会执行这个success,跟你返回的内容无关。
至于你想根据你返回的参数success值进行判断分别处理,你得在上面的success中进行判断处理。比如像这样:
Ext.Ajax.request({
url:'admin!select',
method:'post',
waitMsg:'数据加载中,请稍后....',
success:function(response,opts){
var obj=Ext.decode(response.responseText);
if(obj.success == "true") {//如果你处理的JSON串中true不是字符串,就obj.success == true
//你后台返回success 为 false时执行的代码
} else {
//你后台返回success 为 false时执行的代码
}
},
failure:function(response,opts){
var obj=Ext.decode(response.responseText);
alert(obj.result);

}
})

还有个问题想问下楼主,你是怎么响应客户端信息的???你那个方法不能返回给客户端信息列。
dec12dec
2011-03-31
知道答主
回答量:8
采纳率:0%
帮助的人:0
展开全部
改一下失败时的返回状态码

//修改状态码,和正常的200区分开
response.setStatus(600);
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
李迅宇
2011-03-30 · TA获得超过121个赞
知道答主
回答量:105
采纳率:0%
帮助的人:80.3万
展开全部
你试试失败时返回 { failure : true }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式