简体   繁体   English

getJson无法调用Struts2操作

[英]getJson fails to call Struts2 action

HTML file 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 action 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) Java类(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() method is not getting called when i click on the submit button..but the contents in json format are displayed on the browser when i directly type the url localhost:8000/ajax/test Can anyone tell me what's the problem? 当我单击“提交”按钮时, sayHello()方法没有被调用。但是当我直接键入url localhost:8000/ajax/test时,浏览器中会显示json格式的内容。有人可以告诉我这是什么问题吗?

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

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

This will work if you are refering to the action in the same controller... 如果您在同一控制器中引用动作,则此方法将起作用。

Try 尝试

<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;

    });

});

It is because formInput is undefined in your script. 这是因为formInput在脚本中未定义。 You need to remove it from getJSON . 您需要将其从getJSON删除。

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

change your input to type button like this <input id="btn_send" type="buttom"> and your script to 像这样<input id="btn_send" type="buttom">更改您的输入以键入按钮,并将您的脚本更改为

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

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM