我这样做行吗?</head>  <script type="text/javascript" src="js/jquery-1.3.2.js"></script>
  <script type="text/javascript">
   $(document).ready(function(){
   $("#btnsub").click(function(){
   var josn = {"name":$("#uName").attr("value"),
   "pwd":$("#uPwd").attr("value")};
$.ajax({
type:"post",
url:"user.do?medth=testjoson",
data:josn,
succss:function(msg){
alert(msg);
}
});
   })
   })
  </script>
  <body>
   <form action="">
    用户名:<input type="text" id="uName"/><br>
    密码:<input type="text" id="uPwd"/>
    <input type="button" id="btnsub" value="提交"/>
   </form>
  </body>这样提交到,Action了,请问我要在UserAction的testjoson方法获取提交过来的json应该怎么做呢?
要想把提交过来的JSON对象直接转换成对象该怎么做呢?

解决方案 »

  1.   

    你登陆例子返回对象干嘛,直接返回个true或者false,然后跳转就成了呗
      

  2.   

    和普通的表单提交一样,UserAction对应的ActionForm中定义name,pwd就可以了。或者data:josn改成 data : {param : $.tojson(json)}
    Action中
    JSONObject jsonObj = new JSONObject(request.getParameter("param"));
      

  3.   

    不是这个意思啊,我是想从页面提交一个JSON对象到Action,想知道后台怎么把这个JSON获取到,得到页面提交过来的值。能直接把这个JSON直接转换成一个OBJ··更好
      

  4.   

    1 jquery有ajaxform plugin 不用楼主自己去拼接字符串,它就像提交普通表单一样简单2 json有针对于string2bean的转换支持JSONObject o= JSONObject.fromString(json);      当然你要去下载json for java的包 http://json-lib.sourceforge.net/
      

  5.   

    先看看,有什么问题,到我学AJax的时候,好注意
      

  6.   

    怎么用啊?我下了个JSONObject.java的类,
    但是直接拷贝到我的项目里有错,打成JAR包也不行样啊。
    能说说具体怎么用吗?谢谢
      

  7.   

    LZ 的思路很古怪啊,都是在页面处理 获取 后台的json 数据再做相应的转换,你却刚好相反有必要吗 ? 前台不管多大的数据,你序列化一下,不就行了// struts 1 的东西 &^%$#$%^
    var data = $(form).serialize();
    // jquery 已经封装得很好了,可以直接用 $.post 或 $.get ,当你有更复杂的需要的时候再用 $.ajax
    $.ajax({
        type:"post",
        // 看到这种 方式我就觉得可怕,客户端能知道我在后台用的什么方法, !!!少用地址栏传参!!!
        url:user.do?medth=testjoson, 
        data:data,
        success:function(msg){alert(msg);},
        error:function(XMLHttpRequest){alert("错误" + XMLHttpRequest.status);
    }}
    // 再说一句:请指定 name !!! Id 是留给前台用的, name 是给后台的.做事情不要怕麻烦!!!这样它就会帮你序列化 form 的参数,如 uName=aaa&uPwd=bbbaaa,bbb 是你输入的东西,这些东西都是 自动进行提交的,
      

  8.   

    谢谢,看了你的回复,知道了很多,
    你说不用这种传参,那是定义一个隐藏域?设置它的name,value来指定调用后台的方法吗?还是用其他什么方法啊?
      

  9.   

    之前在公司 ,有人跟我谈起过 struts 1 的这种很奇怪的方式,我那时候就觉得挺郁闷,对于后台来说,前台能够了解到的东西,是越少越好,因为 "所有的输入都是罪恶的" ,也是为了安全的考虑struts 1 倒好,用一个 地址栏参数  method= 或 ! 指定 方法名,乍一想可能还蛮好,可你不觉得这样很不安全吗如果我把 method 后面的方法一改,我也不知道 struts 1 有没有 <default-action-ref name="index" /> 这么一个设置,如果没有,服务器会怎么样? 我也不知道我知道 在 2 里面是可以使用通配符,且在配置文件中 指定 method 抱歉, struts 1 不熟,所有也没办法告诉你有什么其他的方法,只是说出我的一点想法,觉得不好