如何通过 POST (Ajax) 发送 JSON 数据并从 Struts 2 操作接收 JSON 响应
Posted
技术标签:
【中文标题】如何通过 POST (Ajax) 发送 JSON 数据并从 Struts 2 操作接收 JSON 响应【英文标题】:How to send JSON data via POST (Ajax) and receive JSON response from Struts 2 action 【发布时间】:2013-12-23 14:13:29 【问题描述】:我试图了解如何使用 JSON,并且在此过程中我试图从 Struts2 操作中获取 JSON 响应并显示响应警报。为此,我在 javascript 中使用 Ajax POST,如下所示:
function checkButtonClick(id)
var btnSave = 'saveAttendees';
var atNameList = $('#attName'+id).val();
var ptNameList = $('#postName'+id).val();
var aId = $('#at_id'+id).val();
alert("here");
var arr = buttonName: btnSave,
attendeesNameList: atNameList,
attendeesPostList: ptNameList,
hidden_At_id: aId
;
$.ajax(
data: arr,
type: 'POST',
dataType: 'json',
url:"meeting_record_form",
success:function(result)
alert(result.myMsg);
,
error:function(result)
alert("error");
);
我的 Action
类包含一个 String
字段,我试图在警报中显示为 JSON 响应。但我发现这样做有问题。我错过了什么或做错了什么?
我的动作类如下:
private String myMsg;
public String getMyMsg()
return myMsg;
public void setMyMsg(String myMsg)
this.myMsg = myMsg;
private String updateAttendeesRecord()
meetingRecordService.updateAttendeesRecord(attendeesListMethod(), meeting_record);
setMyMsg("Update Successful!");
return SUCCESS;
struts.xml
文件:
<package name="default" extends="struts-default, json-default">
<result-types>
<result-type name="json" class="org.apache.struts2.json.JSONResult" />
</result-types>
<interceptors>
<interceptor name="json" class="org.apache.struts2.json.JSONInterceptor" />
</interceptors>
<action name="meeting_record_form" class="com.task.action.MeetingRecordAction" method="updateAttendeesRecord">
<result name="success" type="json" />
</action>
</package>
我的pom.xml
:
<dependency>
<groupId>org.apache.struts</groupId>
<artifactId>struts2-json-plugin</artifactId>
<version>2.3.15</version>
</dependency>
【问题讨论】:
你能提供一些信息吗? @mic4ael: updateAttendeesRecord() 方法运行成功,数据更新成功,但我收到“错误”警报或“未定义” 也许尝试在您的$.ajax
中添加:async : false
@mic4ael: async: false 不起作用
尝试从错误回调中提醒错误信息。
【参考方案1】:
在操作配置中,您不应覆盖 json-default
包中的默认配置,只需扩展它即可。另外json-default
扩展了struts-default
,因此不需要多重继承。
<package name="default" extends="json-default">
<action name="meeting_record_form" class="com.task.action.MeetingRecordAction" method="updateAttendeesRecord">
<result name="success" type="json" />
</action>
</package>
【讨论】:
@coding_idiot 感谢您指出 json-default 扩展 struts-default【参考方案2】:你的 Action 类 MeetingRecordAction 中的问题,方法 updateAttendeesRecord 是私有的,它应该是公共的
public String updateAttendeesRecord()
meetingRecordService.updateAttendeesRecord(attendeesListMethod(), meeting_record);
setMyMsg("Update Successful!");
return SUCCESS;
【讨论】:
【参考方案3】:我通过在 json 结果中添加 myMsg 解决了我的问题。感谢大家的帮助
【讨论】:
以上是关于如何通过 POST (Ajax) 发送 JSON 数据并从 Struts 2 操作接收 JSON 响应的主要内容,如果未能解决你的问题,请参考以下文章