struts无法返回返回json数据 strutsjsonjquery 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 拿不到值,应该是strut.xml里的配置问题,你的响应就没有拿到。我用struts操作JSON从不这样写,直接用流把Json字符串write到前台,return null,struts.xml只用写个空action就Ok了 你的dataType类型不应该写成时json码 在浏览器上直接访问getAjax,看看有没有json数据,如果有,那么就是js的问题,如果没有,那就是action的问题,先找到问题所在,再就是考虑一下三楼的方法。 m是对象,没有转换为json类型,也就是没有转换为字符串。str = JSONObject.fromObject(m); <param name="root">str</param> 首先:为什反要采用strut2的方式返回json数据?谁告诉你不能用response.write()了?其次:你为什么要不自已组装json呢?我都是用JSONObject来自已组装的!以下就是我返回给调用者数据时使用的方法!protected void sendResponseData(String responseData){ PrintWriter out = null; try{ out = getResponse().getWriter(); out.print(responseData); logger.info("[responseData] = "+responseData); } catch(IOException ex){ logger.error("sendResponseData IOException:"+ex.getMessage()); } finally{ if(null != out) out.close(); } } 不要用alert用console.log(result); 我是觉得这个方法好一点,不用使用JSONArray,我以前用过,感觉要用很多包。我是参考百度文库里面的教程http://wenku.baidu.com/link?url=RSfmt8CJ_2xDipOywYUNr9rLULUQ9KC8bb2Vl7GcPmLmkEVupm_4NP25sIuu7jbVEDdEEjbLdrQaHHa1geeyS7n_TpoDFKsEV75COO_OsL3 应该就是action或者是配置文件有问题了。我试了一下,浏览器没有数据。 你不用JSONObject,JSONArray,你现在是返回简单的对象,可以不用,以后如果要返回的数据很复杂,你就不得不用了!用第三方的东西,没jar包怎么行?action里返回success肯定是错误的,你既然要把数据返回给前台,那么你就用write,这样也可以把action里的方法改为void,从而不需要返回null 加我QQ619066780.我晚上回去帮你弄下,你可以尝试下,直接用out去返回. 你的jquery请求里,dataType应该写成json啊。 actionpackage com.test.action;import java.io.PrintWriter;import java.util.*;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.google.gson.Gson;import com.opensymphony.xwork2.Action;public class MyActionaa implements Action { private String msg; private String canshu1; @Override public String execute() throws Exception { // TODO Auto-generated method stub msg="this is my ajax"; System.out.println(canshu1); Map m=new HashMap<String,Object>(); m.clear(); m.put("canshu1", canshu1); m.put("msg", msg); System.out.println(canshu1);// HttpServletResponse response = ServletActionContext.getResponse();// PrintWriter out = response.getWriter();// Gson gson=new Gson();// String result=gson.toJson(m);// System.out.println(result);// out.println(result); return "success"; } public String getMsg() { return msg; } public void setMsg(String msg) { this.msg = msg; } public String getCanshu1() { return canshu1; } public void setCanshu1(String canshu1) { this.canshu1 = canshu1; }}struts.xml<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC "-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN" "http://struts.apache.org/dtds/struts-2.0.dtd"><struts><!-- struts-default --><!-- json-default --> <constant name="struts.devMode" value="true" /> <package name="default" extends="json-default" namespace="/"> <action name="getData" class="com.test.action.MyActionaa"> <result type="json" name="success"></result> </action> </package></struts>js<script type="text/javascript"> $(document).ready(function(){ $("#heh").click(function(){ $.ajax({ url:"getData.action", dataType:"json", data:{canshu1:"this is my can shu."}, success:function(result){ alert("begin"); alert(result.toString()); alert("before parse"); $.each(result, function(index, item){ alert(item); }); alert("after parse"+result.canshu1+result.msg); alert(msg.msg); }, error:function(a,b,c){ alert(b); } }); }); });</script>谢谢各位好心的朋友,今天我有事了一下,不知道什么原因,竟然成功了。当初为它耗费了一天的时间。这个结果很令人苦笑不得。 Jpa spring集成的问题 action往jsp页面传中文乱码 URL类 未正确获得需要内容 小问题,关于继承,求帮助 这个Java正则匹配哪里出错了? 小弟有个Weblogic+EJB的客户端程序问题想请教各位!!!很急!!!!! Spring动态代理疑问? 请教各位(学习j2ee的过程中要做哪些项目来提高学习效率) struts做登录框时的中文问题,高手来up struts帮忙! 紧急!请大神帮帮忙! myeclipse hibernate reverse engineering出现 An internal error occurred during:
我用struts操作JSON从不这样写,直接用流把Json字符串write到前台,return null,struts.xml只用写个空action就Ok了
其次:你为什么要不自已组装json呢?我都是用JSONObject来自已组装的!
以下就是我返回给调用者数据时使用的方法!
protected void sendResponseData(String responseData){
PrintWriter out = null;
try{
out = getResponse().getWriter();
out.print(responseData);
logger.info("[responseData] = "+responseData);
} catch(IOException ex){
logger.error("sendResponseData IOException:"+ex.getMessage());
} finally{
if(null != out) out.close();
}
}
用console.log(result);
我是参考百度文库里面的教程
http://wenku.baidu.com/link?url=RSfmt8CJ_2xDipOywYUNr9rLULUQ9KC8bb2Vl7GcPmLmkEVupm_4NP25sIuu7jbVEDdEEjbLdrQaHHa1geeyS7n_TpoDFKsEV75COO_OsL3
应该就是action或者是配置文件有问题了。我试了一下,浏览器没有数据。
action里返回success肯定是错误的,你既然要把数据返回给前台,那么你就用write,这样也可以把action里的方法改为void,从而不需要返回null
import java.io.PrintWriter;
import java.util.*;import javax.servlet.http.HttpServletResponse;import org.apache.struts2.ServletActionContext;import com.google.gson.Gson;
import com.opensymphony.xwork2.Action;public class MyActionaa implements Action {
private String msg;
private String canshu1;
@Override
public String execute() throws Exception {
// TODO Auto-generated method stub
msg="this is my ajax";
System.out.println(canshu1);
Map m=new HashMap<String,Object>();
m.clear();
m.put("canshu1", canshu1);
m.put("msg", msg);
System.out.println(canshu1);
// HttpServletResponse response = ServletActionContext.getResponse();
// PrintWriter out = response.getWriter();
// Gson gson=new Gson();
// String result=gson.toJson(m);
// System.out.println(result);
// out.println(result);
return "success";
} public String getMsg() {
return msg;
} public void setMsg(String msg) {
this.msg = msg;
}
public String getCanshu1() {
return canshu1;
} public void setCanshu1(String canshu1) {
this.canshu1 = canshu1;
}}
struts.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE struts PUBLIC
"-//ApacheSoftwareFoundation//DTDStrutsConfiguration2.0//EN"
"http://struts.apache.org/dtds/struts-2.0.dtd">
<struts>
<!-- struts-default -->
<!-- json-default -->
<constant name="struts.devMode" value="true" />
<package name="default" extends="json-default" namespace="/">
<action name="getData" class="com.test.action.MyActionaa">
<result type="json" name="success"></result>
</action>
</package>
</struts>js
<script type="text/javascript">
$(document).ready(function(){
$("#heh").click(function(){
$.ajax({
url:"getData.action",
dataType:"json",
data:{canshu1:"this is my can shu."},
success:function(result){
alert("begin");
alert(result.toString());
alert("before parse");
$.each(result, function(index, item){
alert(item);
});
alert("after parse"+result.canshu1+result.msg);
alert(msg.msg);
},
error:function(a,b,c){
alert(b);
}
});
});
});
</script>
谢谢各位好心的朋友,今天我有事了一下,不知道什么原因,竟然成功了。当初为它耗费了一天的时间。这个结果很令人苦笑不得。