解决方案 »

  1.   

    拿不到值,应该是strut.xml里的配置问题,你的响应就没有拿到。
    我用struts操作JSON从不这样写,直接用流把Json字符串write到前台,return null,struts.xml只用写个空action就Ok了
      

  2.   

    你的dataType类型不应该写成时json码
      

  3.   

    在浏览器上直接访问getAjax,看看有没有json数据,如果有,那么就是js的问题,如果没有,那就是action的问题,先找到问题所在,再就是考虑一下三楼的方法。
      

  4.   

    m是对象,没有转换为json类型,也就是没有转换为字符串。str = JSONObject.fromObject(m); <param name="root">str</param>
      

  5.   

    首先:为什反要采用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();
    }
    }
      

  6.   

    不要用alert
    用console.log(result);
      

  7.   

    我是觉得这个方法好一点,不用使用JSONArray,我以前用过,感觉要用很多包。
    我是参考百度文库里面的教程
    http://wenku.baidu.com/link?url=RSfmt8CJ_2xDipOywYUNr9rLULUQ9KC8bb2Vl7GcPmLmkEVupm_4NP25sIuu7jbVEDdEEjbLdrQaHHa1geeyS7n_TpoDFKsEV75COO_OsL3
      

  8.   


    应该就是action或者是配置文件有问题了。我试了一下,浏览器没有数据。
      

  9.   

    你不用JSONObject,JSONArray,你现在是返回简单的对象,可以不用,以后如果要返回的数据很复杂,你就不得不用了!用第三方的东西,没jar包怎么行?
    action里返回success肯定是错误的,你既然要把数据返回给前台,那么你就用write,这样也可以把action里的方法改为void,从而不需要返回null
      

  10.   

    加我QQ619066780.我晚上回去帮你弄下,你可以尝试下,直接用out去返回.
      

  11.   

    你的jquery请求里,dataType应该写成json啊。
      

  12.   

    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>
    谢谢各位好心的朋友,今天我有事了一下,不知道什么原因,竟然成功了。当初为它耗费了一天的时间。这个结果很令人苦笑不得。