我的登录页面,利用extJS的JsonStore组件向Server发送数据,验证用户名密码,然后Server返回将要跳转的页面URL(登录成功或失败页面).
客户端登录表单的【登入】按钮响应以上过程,以下是js代码:
[code="js"]
buttons : [{
text : '登入',
handler : function() {
var username = Ext.get('name').getValue();
var pwd = Ext.get('password').getValue();
var store = new Ext.data.JsonStore({
proxy : new Ext.data.HttpProxy({
url : 'logon.do' + '?username='
+ username + '&pwd='
+ pwd,
method : 'GET'
}),
reader : new Ext.data.JsonReader({
root : 'rows',
id : 'id',
totalProperty : 'counts',
fields : ['topage']
})
});
store.load();
if (store.getAt(0) != null) {
Ext.Msg.alert('Info', '共获得'+store.getCount()+'条数据');
window.open(store.getAt(0).get('topage'), '_blank');
}
}
}
[/code]
以下是Server端业务处理代码:
[code="java"]
public class LogonController extends HttpServlet{
String pageurl="";
String json="";
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException,IOException{
response.setContentType("application/x-json;charset=UTF-8");
String username = request.getParameter("username");
String pwd = request.getParameter("pwd");
if(username.equals("jerry") && pwd.equals("1")){
pageurl="http://localhost:8080/hrms/index.html";
}else
pageurl="http://localhost:8080/hrms/failure.html";
PrintWriter writer = response.getWriter();
System.out.println(writer.toString());
JSONObject jObj = new JSONObject();
jObj.put("topage",pageurl);
json = jObj.toString();
System.out.println(json);
writer.write(json);
}
public void doPost(HttpServletRequest request,HttpServletResponse response)
throws ServletException,IOException{
doGet(request,response);
}
}
[/code]
通过测试,发现store对象中没有获取到数据(store.getCount()为空),利用FireBug调试,得到以下结果:
[img]/upload/attachment/67084/da5a4590-3d40-3015-ba43-93946e6bf5c6.jpg[/img]
说明客户端得到了response,但是json格式的数据没有被解析。
若将store.getAt(0)提出来单独执行,FireBug调试却又得到如下结果:
[img]/upload/attachment/67087/d6ead45e-c98e-386e-9b64-7461f271d330.jpg[/img]
请各位给断断,这是怎么回事?谢谢哈。
[b]问题补充:[/b]
rain2005:
注释掉也是不行啊,服务器应该是返回一个js页面的吧,这样json才能封装为对象。