关于java 向前台js中传值的问题 现在通过前台向数据库查询了一个对象,现在需要把这个对象传回前台表单中,现在用原生的ajax 去做、 哪位大神教教我怎么使用json 把这些字段传回前台?小弟新手,先谢谢了。能给出详细理论或者demo的最好。 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 先下一个JSON的工具包,有阿里的fastjson、json-lib和jackson等等;比如fastjsonimport com.alibaba.fastjson.JSON;Model model = ...; String jsonStr = JSON.toJSONString(model);再把字符串用response写回给浏览器即可 先通过jsonlib或者其他工具将pojo转换成json字符串然后通过reponse.getWriter.write() 写到前台前台获取到字符串转换成json对象就行, js将字符串转换为json对象有内置方法,百度一下就好。 你去百度搜索一个jsonutils 又各种json转换 一看就能明白 后台用一个map集合把对象传到前台,前天你用ajax接收的时候,在ajax响应成功的那里, 把你需要的值取出来就可以了 比如: success : function(data) { if (data.code == 0) { data.你的对象.需要的值 } else { 注意 : 我所希望的是用原生的Ajax 去做,而并非第三方封装好的Ajax。 var data=xhr.responseText;data=eval("("+data+")");//现在这个data就是json对象了 <body> <input type="button" value="post" id="search" onclick="search()"/> </body><script type="text/javascript"> function search(){ $.ajax({ type: "POST", url: "userAction!search.act", success: function(msg){ alert( msg ); } }); }</script> public void search(){ Module model = new Module(); model.setId(1); model.setName("www"); success("操作成功!",model); } protected String success(String message,Object data) { return result("success", message, data); } import net.sf.json.JSONObject; protected String result(String status,String message,Object data) { JSONObject json=new JSONObject(); json.put("status", status); json.put("message", message); json.put("data", data); return ajaxJsonObject(json); } protected String ajaxJsonObject(JSONObject json) { return ajax(json, "text/html"); } protected String ajax(Object content, String type) { HttpServletResponse response=null; try { response=getResponse(); response.setContentType(type + ";charset=UTF-8"); response.setHeader("Pragma", "No-cache"); response.setHeader("Cache-Control", "no-cache"); response.setDateHeader("Expires", 0); response.getWriter().print(content); } catch (IOException e) { LOG.error(e.getMessage()); } finally{ try { response.getWriter().flush(); response.getWriter().close(); } catch (Exception e) { LOG.error(e.getMessage()); } } return null; } 首先如果用的是Springmvc需要在方法返回值上面加@ResponseBody注解public @ResponseBody Map<String, String> goToLogin(){ this.getMes().put("**", "**"); this.getMes().put("**", "***"); return this.getMes(); }我这里是map,想要json,使用JsonObject.fromObject传一下就好了---前台如果是表单的话,可以写一个表单的回调函数 data-callback='addBtnBack'js实现函数function addBtnBack(json) {} 就可以使用json数据了 原生 的ajax? 那就是string 喽? 直接 返回 json 串就是了 别返回 对象 然后用js 把 字符串转成json java 对象转json的工具包一大堆,我常用的一种。Gson gson= new Gson();String userJson = gson.toJson(wareList);StringBuilder jsonBuf = new StringBuilder("{\"flag\":");jsonBuf.append(result);jsonBuf.append(", \"msg\":\");jsonBuf.append(msg);jsonBuf.append("\", \"data\":");jsonBuf.append(userJson)jsonBuf.append("}");return jsonBuf.toString();js: json2jsobj 可以2选1,建议还是用前后端分离,用angularjs/vuejs等单文件js技术1.eval("var wareList="+jsonStr);2.var myJson = new Function("return "+jsonStr);alert(myJson()['flag']) 非常简单的一个小忙麻烦大家了!!!!!!! 谁有HttpClient的中文文档??? jsp页面路径问题(比较急) 请高手看看这个莫名奇妙的问题 Struts 自定义标签的问题! 用j2sdk编译servlet还是找不到javax.servlet.http.*包!!! 用jsp/servlet写的登录程序为什么跳转不起作用啊! textarea jsp调用的dll文件应该放在哪个目录下 怎样获取数据库中的字段值? 求大佬帮我看看怎么解决 初级!望请教各位大神 。tomcat 无缘无故报出 Illegal access: 什么页面也没请求,虽然不影响使用,但是感觉很奇怪
Model model = ...;
String jsonStr = JSON.toJSONString(model);
再把字符串用response写回给浏览器即可
然后通过reponse.getWriter.write() 写到前台前台获取到字符串转换成json对象就行, js将字符串转换为json对象有内置方法,百度一下就好。
if (data.code == 0) {
data.你的对象.需要的值
} else {
data=eval("("+data+")");
//现在这个data就是json对象了
<input type="button" value="post" id="search" onclick="search()"/>
</body>
<script type="text/javascript">
function search(){
$.ajax({
type: "POST",
url: "userAction!search.act",
success: function(msg){
alert( msg );
}
});
}
</script>
public void search(){
Module model = new Module();
model.setId(1);
model.setName("www");
success("操作成功!",model);
} protected String success(String message,Object data) {
return result("success", message, data);
} import net.sf.json.JSONObject;
protected String result(String status,String message,Object data) {
JSONObject json=new JSONObject();
json.put("status", status);
json.put("message", message);
json.put("data", data);
return ajaxJsonObject(json);
} protected String ajaxJsonObject(JSONObject json) {
return ajax(json, "text/html");
} protected String ajax(Object content, String type) {
HttpServletResponse response=null;
try {
response=getResponse();
response.setContentType(type + ";charset=UTF-8");
response.setHeader("Pragma", "No-cache");
response.setHeader("Cache-Control", "no-cache");
response.setDateHeader("Expires", 0);
response.getWriter().print(content);
} catch (IOException e) {
LOG.error(e.getMessage());
}
finally{
try {
response.getWriter().flush();
response.getWriter().close();
} catch (Exception e) {
LOG.error(e.getMessage());
}
}
return null;
}
public @ResponseBody Map<String, String> goToLogin(){
this.getMes().put("**", "**");
this.getMes().put("**", "***");
return this.getMes();
}
我这里是map,想要json,使用JsonObject.fromObject传一下就好了
---前台如果是表单的话,可以写一个表单的回调函数 data-callback='addBtnBack'
js实现函数
function addBtnBack(json) {} 就可以使用json数据了
Gson gson= new Gson();
String userJson = gson.toJson(wareList);
StringBuilder jsonBuf = new StringBuilder("{\"flag\":");
jsonBuf.append(result);
jsonBuf.append(", \"msg\":\");
jsonBuf.append(msg);
jsonBuf.append("\", \"data\":");
jsonBuf.append(userJson)
jsonBuf.append("}");
return jsonBuf.toString();js: json2jsobj 可以2选1,建议还是用前后端分离,用angularjs/vuejs等单文件js技术
1.eval("var wareList="+jsonStr);
2.var myJson = new Function("return "+jsonStr);
alert(myJson()['flag'])