问题是这样的,从jsp页面表单提交后,通过服务器验证,并返回json格式的数据,但是在jsp页面无法接收到返回的json数据,而服务器返回的json数据直接就显示出来了
action代码如下:private String name;
private String pass;
private int age;
//setter/getter... @Override
public String execute() throws Exception {
System.out.println(this.age+":"+this.name);
return SUCCESS;

}
jsp页面代码如下<script type="text/javascript" src="jquery/jquery.js"></script>
<script type="text/javascript">
$(function() {
$("#btn").click(function() {
var params = {
"name":$("input[name='name']").val(),
"pass":$("input[name='pass']").val(),
"age":$("input[name='age']").val()
}

$.getJSON("hello.action",params,function(data,status){

alert(data)
},"json");
});
})


</script>
  </head>
  
  <body>
  <form action="hello" method="post" id="f">
    <input type="text" name="name"><br>
    <input type="password" name="pass"><br>
    <input type="text" name="age"><br>
    <input type="submit" value="login" id="btn">
    </form>
  </body>
struts.xml代码如下: <package name="default" namespace="/" extends="json-default">
<action name="hello" class="com.ly.action.Login">
<result type="json"></result>
</action>
    
    </package>
我本意是服务器返回的数据可以alert一下,但是没反应,数据直接就在页面打印了。而jsp中的$.getJSON("hello.action",params,function(data,status){

alert(data)
},"json");
没起作用
这是实验效果,输入框控制台打印的数据是  11:ffff输入后就是这个样子了我本意是把{"age":11,"name":"ffff","pass":"hhh"}这个alert一下,但是不行,求解这是怎么回事
页面在firefox上一点错都没

解决方案 »

  1.   

    很明显你问错区了。这属于web开发/javascript或ajax的范畴
    不过我可以明确地告诉你,你这click执行后还没获取到返回信息时submit事件执行了,于是网页刷新为你的返回结果。
      

  2.   

    System.out.println(this.age+":"+this.name);是打印到控制台,返回json 要out.print("")..
      

  3.   


    不是的我在function里面alert这句没有执行
      

  4.   

    不懂,难道把submit改成button,你说的这个问题怎么改,谢了
      

  5.   


    懂了,谢谢了,的确click后表单还是提交了,相当于没用到ajax,如果将submit改成button进行了,谢谢了