getJson无法调用Struts2操作

时间:2012-12-12 18:37:25

标签: java jquery ajax json struts2

HTML文件

<html>
<head>
<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript">

    var $ = jQuery;
    $(function(){
        $("#introForm").submit(function(){

            $.getJSON('ajax/test.action', formInput,function(data){    
                alert(data.greeting);
            });

            return false;
        });
    });
</script>
</head>
<body>
<form  id="introForm">
    <label >Enter Your Name</label>

    <input type="submit">
</form>

</body>
</html>

Struts.xml操作

 <package  extends="json-default" name="jsonStruts2" namespace="/ajax" >
    <action name="test" class="com.vrde.daems.action.TestAction" method="sayHello">
        <result type="json"></result>
    </action>
</package>

Java Class(TestAction.java)

public class TestAction {
    private String greeting;

    public String getGreeting() {
        return greeting;
    }

    public void setGreeting(String greeting) {
        this.greeting = greeting;
    }

    public String sayHello()
    {
        greeting = "Hello Ajax";
        return "success";
    }
}
当我点击提交按钮时,

sayHello()方法没有被调用。但是当我直接输入网址localhost:8000/ajax/test时,浏览器会显示json格式的内容 谁能告诉我这是什么问题?

4 个答案:

答案 0 :(得分:0)

<script type="text/javascript">
    var $ = jQuery;
    $(function(){
        $("#introForm").submit(function(){
            $.getJSON('./test.action', formInput,function(data){
                alert(data.greeting);
            });

            return false;
        });
    });
</script>

如果您在同一个控制器中引用该动作,这将有效...

答案 1 :(得分:0)

尝试

<script type="text/javascript">

var $ = jQuery;
$(function(){

    $("#introForm").submit(function(){


        $.getJSON("<s:url action='test' namespace='ajax' includeParams='none' />", formInput,function(data){

            alert(data.greeting);
        });

        return false;

    });

});

答案 2 :(得分:0)

这是因为您的脚本中未定义formInput。您需要将其从getJSON删除。

<script type="text/javascript">
   var $ = jQuery;
   $(function(){
     $("#introForm").submit(function(){
        $.getJSON('ajax/test.action', function(data){
            alert(data.greeting);
        });
        return false;
     });
   });
</script>

答案 3 :(得分:0)

将您的输入更改为类型按钮,如此<input id="btn_send" type="buttom">和您的脚本

$("#btn_send").click(function(){

   $.getJSON('ajax/test.action', $('#formInput').serialize(), function(data){    
        alert(data.greeting);
   });
});