因为本人是做移动APP开发的,第一次用jfinal开发后台管理,弄了许久才弄明白,jfinal在post中传递数据时候获取数据。之前看官方文档使用的getPara()这种形式去获取URL的参数,但是这种获取是get的时候发送的数据,还有都就通过From表单形式去提交。但是我的页面不是通过表单提交方式。所以捣鼓了好久。
后台:
public void login() {
int type = 0;
String nickname= null;
try {
QueryRequest request = getRequestObject(QueryRequest.class);
//校验过程省略
//...................
//校验通过
type = 1;
} catch (Exception e) {
e.printStackTrace();
}
//校验后,返回数据,重新渲染界面
if(type == 1){
setAttr("type", 1);
setAttr("msg", "登陆成功");
renderJson();
}else{
setAttr("type", 0);
setAttr("msg", "登陆失败");
}
renderJson();
}
/**
* 取Request中的数据对象
*
* @param valueType
* @return 返回fastjson解析的数据
* @throws Exception
*/
protected <T> T getRequestObject(Class<T> valueType) throws Exception {
StringBuilder json = new StringBuilder();
BufferedReader reader = this.getRequest().getReader();
String line = null;
while ((line = reader.readLine()) != null) {
json.append(line);
}
reader.close();
return JSONObject.parseObject(json.toString(), valueType);
}
前端:
<script>
$(function () {
$('#login').click(function(){
var name = $("#username").val();
var pwd = $("#password").val();
do_ajaxSubmit({"username":'name',"password":'pwd'}, "../login", "../user");
});
});
/**
* ajax提交
* @param param
* @param url
* @param returl
*/
function do_ajaxSubmit(param,url,returl){
var eurl = encodeURI(url);
$.ajax({type:"POST", url:eurl, data:param, dataType:"json", error:function () {
alert("系统错误,请稍后重试");
}, success:function (data) {
if (data.type == 1) {
//art.dialog.alert(data.msg);
returl == null ? window.location.reload() : window.location.href=returl;
} else {
alert(data.msg);
}
}});
}
</script>