[英]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.