$ .getJSON没有从Struts2 Action Class到Jsp Page检索数据

时间:2014-06-29 11:46:47

标签: java struts2 struts2-jquery struts2-json-plugin

我想从我的jsp页面中的Struts2 Action类中检索字段。

我的Javascript代码jsp能够触发它的动作类,但是在通过{{1}调用假定元素的Id时,不会将动作类中的set字段值显示到jsp页面}} 即可。我的控制台显示一切正常。我已经经历了各种各样的例子和不知道为什么我一直遇到同样的问题。我无法弄清楚确切的问题。这是我的代码:

在new.jsp

javascript

在struts.xml中

<%@ page language="java" contentType="text/html; charset=ISO-8859-1"
pageEncoding="ISO-8859-1"%>
<%@taglib uri="/struts-tags" prefix="s"%>
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN" "http://www.w3.org/TR/html4/loose.dtd">
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=ISO-8859-1">
<title>getJSON example</title>
 <script src="http://code.jquery.com/jquery-1.9.1.js"></script>
</head>
<body>

<s:select label="Category" id="category" name="category" list="{'Select','Animal','Bird'}"></s:select><br/>

<s:textfield label="Field1" id="field1" name="field1" ></s:textfield>

<script type="text/javascript">
$(document).ready(function(){
$(document).on('change','#category',function(){
var JScategory=$(this).val();
$.getJSON("getfield",
{category:JScategory},
function(data){
$('#field1').html(field);
});
}
);

});
</script>
</body>
</html>

行动类

 <package name="jsonpack" namespace="/" extends="json-default">

<action name="getfield" class="com.mobile.TestDropDown">
<result type="json" name="success"></result>
</action>

</package>

请查找我是否遗失任何内容。

5 个答案:

答案 0 :(得分:0)

我没有看到您在行中初始化field JS变量的位置:

$('#field1').html(field);

此处field的价值是多少?

答案 1 :(得分:0)

一切都好,只需使用此

 $('#field1').val(data.field);

而不是

 $('#field1').html(field);

因为json返回了url

http://localhost:8083/yourProjectName/getfield?category=Bird

  

{ “类别”: “鸟”, “场”: “鹰”}

为了在文本框中获取 Eagle ,我们访问变量data.field

 <script type="text/javascript">
      $(document).ready(function(){
           $(document).on('change','#category',function(){
                var JScategory=$(this).val();
                $.getJSON("getfield",
                {category:JScategory},
                function(data){
                     $('#field1').val(data.field);
                });
                }
           );
      });
 </script>

如果您收到任何错误或无效,请告知我们。

答案 2 :(得分:0)

您应该获得的类别的值

var JScategory=$("#category").val();

并使用

$.getJSON("<s:url namespace='/' action='getfield'/>", { category: JScategory })
.done(function(json) {
  console.log( "JSON Data: " + json );
  $("#field1").val(json.field);
})
.fail(function( jqxhr, textStatus, error ) {
  var err = textStatus + ", " + error;
  console.log( "Request Failed: " + err );
});

答案 3 :(得分:0)

它返回json对象,因此,您应该执行以下步骤,它可以正常工作。

json对象包含键和值,因此需要迭代您的数据。然后将其设置到您的字段中。

     function(data) {
       //it is Json Data
        $.each(data,function(key,value){
               $('#field1').val(value);
          });
      });

答案 4 :(得分:0)

您是否错过了动作后缀?默认值为.action

尝试

$.getJSON("getfield.action",
     {category:JScategory},
      function(data){
        $('#field1').html(field);
 });