前台如下
    $.ajax({  
       url : "findContentByid.action",  
       cache : false,  
       type : "post",  
       dataType : "json", 
       data : {mid : id}, 
          success: function(data){  
           alert(data); 
           var json = eval("("+data+")");
 
          },  
     error: function (XMLHttpRequest, textStatus, errorThrown) {
alert("读取服务器数据失败...");
  }
    });  
struts2 配置文件入下<package name="ajaxmessage" extends="json-default" namespace="/">
   <action name="findContentByid" class="messageAction" method="findContentByid">
<result type="json" name="findajaxmc"> 
<param name="root" >result</param>
</result>
</action>
</package>action如下

public String findContentByid(){
Map<String, String> map = new HashMap<String, String>();
map.put("details", "a");
JSONObject jsonobject = JSONObject.fromObject(map);
result = jsonobject.toString();
System.out.println(getResult());
return "findajaxmc";
}ajax可以进入action 并打印{"details":"a"}
为什么返回到ajax成功的回调函数alert  data为null 
<param name="root" >result</param>  这个result有set get 确定有值 就是传不回去..真心求达人指点..
JSONStrutsJava

解决方案 »

  1.   

    你浏览器直接 请求 findContentByid.action  看看可以返回数据不?
      

  2.   

    在试试,result = "{\ "firstName\": \"Brett\" } ";,或者用其他浏览器看看success结果
      

  3.   

    ajax可以进入action 并把前台ajax的值拿到..主要就是拿到值查询 封装json后 返回不过去前台了..alert(data)是null alert(result)为success
      

  4.   

    你浏览器 直接跳你的action 看返回的数据是什么样子, 那个不是什么正则,我意思后台写死看看,是否返回。
      

  5.   

    type Exception reportmessage description The server encountered an internal error () that prevented it from fulfilling this request.exception java.lang.NumberFormatException: null
    java.lang.Integer.parseInt(Integer.java:417)
    java.lang.Integer.parseInt(Integer.java:499)
    cn.com.hkgt.auth.action.workbench.MessageAction.findContentByid(MessageAction.java:84)
    sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
    sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
    java.lang.reflect.Method.invoke(Method.java:597)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeAction(DefaultActionInvocation.java:440)
    com.opensymphony.xwork2.DefaultActionInvocation.invokeActionOnly(DefaultActionInvocation.java:279)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:242)
    com.opensymphony.xwork2.interceptor.DefaultWorkflowInterceptor.doIntercept(DefaultWorkflowInterceptor.java:163)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    com.opensymphony.xwork2.DefaultActionInvocation.invoke(DefaultActionInvocation.java:236)
    com.opensymphony.xwork2.validator.ValidationInterceptor.doIntercept(ValidationInterceptor.java:249)
    org.apache.struts2.interceptor.validation.AnnotationValidationInterceptor.doIntercept(AnnotationValidationInterceptor.java:68)
    com.opensymphony.xwork2.interceptor.MethodFilterInterceptor.intercept(MethodFilterInterceptor.java:87)
    后台的json已经写死   
      

  6.   


    public String findContentByid(){
    String centent = announcemnetService.findcontent(Integer.parseInt(mid));
    Map<String, String> map = new HashMap<String, String>();
    map.put("details", centent);
    JSONObject jsonobject = JSONObject.fromObject(map);
    result = jsonobject.toString();
    System.out.println(getResult());
    return "findajaxmc";
    }
    这是完整的action
      

  7.   

    public String findContentByid(){
         
         
        result ="{\ "firstName\": \"Brett\" } ";
        
        return "findajaxmc";
    }
      

  8.   


    浏览器直接访问findContentByid.action得到什么就是什么,空白就是java没配置对,帮你移动到java去算了
      

  9.   

    我试了下都是可以的啊。$.ajax({  
              url : "${ctx}/admin/testAction!findContentByid.action",  
              type: "post",
              cache : false,  
              dataType : "json",
              data : {mid : 'dd'}, 
              success : function(data) {
          var json = eval("("+data+")");
           alert(json.details); 
      
       },
              error : function(e) {
                alert(e);
     
              }
        });  public String findContentByid() {
    Map<String, String> map = new HashMap<String, String>();
    map.put("details", "a");
    JSONObject jsonObject = JSONObject.fromObject(map);
    System.out.println(jsonObject.get("details") + "--------");
    //this.result = jsonObject.toString();
    this.result= "{\"details\": \"b\"}";
    return "findajaxmc";
    }struts 配置 <action name="testAction" class="testAction" method="findContentByid">
                <result type="json" name="findajaxmc">
                 <param name="root">result</param> 
                </result>
                </action>
      

  10.   

    再次感谢楼上的...尤其是rui888..
      

  11.   

    可以把你引用的jquery版本架包发下图呢...-.-现在是jquery1.1 struts2.1.6 怀疑者方面有问题..
      

  12.   

    struts2-core-2.2.1.1.jar ,struts2-json-plugin-2.2.1.1.jar ,jquery-1.8.0.min.js,你最好deubug 你的
    error: function (XMLHttpRequest, textStatus, errorThrown)看看错误的相信信息,是否返回200, responseText里面会有返回数据, 
      

  13.   

    浏览器直接访问findContentByid.action 看看是否有json 数据。