我尝试使用String
方法从动作类中获取$.getJSON
值,但我得到的结果为undefined
。以下是我尝试过的代码片段
脚本:
$(function() {
$("#newPostionFormID").submit(
function() {
var formInput = $(this).serialize();
$.getJSON('../employeeShifts/addnewposition.action',
formInput, function(jsonResponse) {
console.log(jsonResponse.positionAdded);
});
return false;
});
});
strus.xml:
<package name="employeeShifts" namespace="/employeeShifts"
extends="struts-default,json-default">
<action name="addnewposition"
class="com.vgt.intranet.employeeshifts.action.EmployeeShiftAction"
method="addNewPosition">
<result type="json">
<!-- <param name="excludeNullProperties">true</param>
<param name="noCache">true</param>
<param name="root">positionAdded</param> -->
</result>
</action>
</package>
动作类:
public class EmployeeShiftAction extends ActionSupport {
private String position;
private String positionAdded;
public String addNewPosition() {
log.info("inside addNewPosition");
position = this.getPosition();
log.info("Position: " + position);
positionAdded = position;
log.info("positionAdded: " + positionAdded);
return Action.SUCCESS;
}
public String getPosition() {
return position;
}
public void setPosition(String position) {
this.position = position;
}
public String getPositionAdded() {
return positionAdded;
}
public void setPositionAdded(String positionAdded) {
this.positionAdded = positionAdded;
}
控制台日志:
未定义
我不知道哪里出错了?任何帮助赞赏。
答案 0 :(得分:1)
在控制台日志中,您可以打印jsonResponse.positionAdded
,但您在操作返回的JSON中没有属性positionAdded
。要访问此属性,您应该返回JSON结果
<result type="json">
<!-- <param name="excludeNullProperties">true</param> -->
<param name="noCache">true</param>
</result>
答案 1 :(得分:1)
您可以使用inlcude params将多个对象定义为out参数。 默认情况下,JSON调用默认情况下会自动调用该控制器中的所有函数/方法,这些函数/方法的方法名称以“get”开头。所以请确保不会发生这种情况。
<result type="json">
<param name="excludeNullProperties">true</param>
<param name="ignoreHierarchy">false</param>
<param name="includeProperties">list1.*,list2.*,string</param>
</result>
答案 2 :(得分:0)
你应该在json的动作类中编码。你应该将json数据返回到客户端。在我的情况下,我使用GSON它是一个java库,可以用来将Java对象转换为它们的JSON表示.GSON (https://code.google.com/p/google-gson/)看看这里。在你从动作类中返回json数据之前,你无法在客户端检索json数据。尝试将positionAdded转换为动作类中的JSON数据。
我建议你的客户端,这个脚本:
jQuery.ajax(
{
type: 'POST',
url:'../employeeShifts/addnewposition.action',,
dataType: 'json',
success:function(data){
var dat=data.positionAdded
//alert(dat);
var obj = jQuery.parseJSON(dat);
alert(obj);
},
error:function(data1,data2,data3){
//alert("error");
alert(data3);
}
});
答案 3 :(得分:0)
谢谢大家。在这里,我发布了最终的工作struts配置作为答案的答案。
<result type="json">
<param name="root">action</param>
<param name="includeProperties">positionAdded</param>
<param name="excludeNullProperties">true</param>
<param name="noCache">true</param>
</result>