前台js代码,用的是jquery库演示
var lcPostData={"id":1,"name":2};
var url="blog/getJson";
$.ajax({
url:url,
type:'post',
data:lcPostData,
timeout : 20000,
success:function(data){
alert("操作成功");
},
error:function(XMLHttpRequest, textStatus, errorThrown){
alert("访问后台发生错误:"+XMLHttpRequest.status)
}
});
后台代码
/**
* 配置路由
*/
public void configRoute(Routes me) {
me.add("/blog", BlogController.class);
}
public class BlogController extends Controller {
public void getJson() {
System.out.println("从前台传过来的数据是:"+getPara("id"));
System.out.println("从前台传过来的数据是:"+getPara("name"));
System.out.println("从前台传过来的数据是:"+getPara("pwd"));//错误提取看看报错么
redirect("/blog");
}
}
查看结果:
从前台传过来的数据是:1
从前台传过来的数据是:2
从前台传过来的数据是:null
能取到值,值得注意的是最后一个并没有抛异常什么的,而是返回了一个null值,查看源码调用的是request.getParameter(name)方法
json后台向前台传递json对象,jfinal自己封装了一个Controller类,里面的renderJson()方法可以将一定格式的数据转换成json对象,一般Controller类继承了这个类,所以可以直接用这个方法。用了这个方法就不能用redirect(“/url)z这个方法了。下面看看renderJson()有哪些重载方法:
/**
* Render with json
* <p>
* Example:<br>
* renderJson("message", "Save successful");<br>
* renderJson("users", users);<br>
*/
public void renderJson(String key, Object value) {
render = renderFactory.getJsonRender(key, value);
}
/**
* Render with json
*/
public void renderJson() {
render = renderFactory.getJsonRender();
}
/**
* Render with attributes set by setAttr(...) before.
* <p>
* Example: renderJson(new String[]{"blogList", "user"});
*/
public void renderJson(String[] attrs) {
render = renderFactory.getJsonRender(attrs);
}
/**
* Render with json text.
* <p>
* Example: renderJson("{\"message\":\"Please input password!\"}");
*/
public void renderJson(String jsonText) {
render = renderFactory.getJsonRender(jsonText);
}
调用的实例在方法上面都有,不得不说jfinal写得灰常人性化