gpt4 book ai didi

jquery - 无法使用 jQuery 加载 JSON 上的完整数据

转载 作者:行者123 更新时间:2023-12-01 08:15:59 25 4
gpt4 key购买 nike

我正在尝试将 Json 与 struts 2 和 jquery 一起使用,我能够达到一定水平,但过去两天我一直遇到一些问题。这是我为此使用的代码和配置

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

<result-types>
<result-type name="tiles" class="org.apache.struts2.views.tiles.TilesResult"></result-type>
</result-types>

<action name="showUpdateAjax" class="courseCreateAction" method="showUpdateAjax">
<result type="json">
<param name="includeProperties">courseInfo, fetchedAllSubjects, selectedFetchedSubs, subjectList, fetchedAllExamType, examTypeList, selectedExmTypes, fetchedAllCourse, isUpdate, btnPressed, updateCourseId, nextCourse, previousCourse</param>
<param name="prefix">true</param>
<param name="ignoreHierarchy">false</param>
</result>
</action>

这是我这部分的 Jsp 代码

<tr><td><input type="submit" value="Refresh" onclick="refreshData()" id="refreshBtn"/></td></tr>

<tr><td><s:a href="/SASIS/showUpdateAjax.action?updateCourseId=4">click Here 2</s:a></td></tr>
</table>
</center>
<script type="text/javascript">
$(document).ready(function(){
$("#refreshBtn").click(function(){
$.getJSON("/SASIS/showUpdateAjax.action?updateCourseId=4",function(data){
alert('its working '+data);

});

});
});
</script>

这是我的java代码

public class CourseCreateAction extends ActionSupport implements ServletRequestAware{
private CourseInfo courseInfo;
private List fetchedAllSubjects;
private List<SubjectInfo> selectedFetchedSubs;
private List subjectList;
private List fetchedAllExamType;
private List examTypeList;
private List<ExamType> selectedExmTypes;
private List fetchedAllCourse;
private String nextCourse;
private String previousCourse;
private DAOInterface dao;
private String btnPressed;
private String updateCourseId;
private HttpServletRequest request;
private boolean isUpdate;

public void setServletRequest(HttpServletRequest request) {
request=request;
}

public List getFetchedAllSubjects() {
return fetchedAllSubjects;
}

public void setFetchedAllSubjects(List fetchedAllSubjects) {
this.fetchedAllSubjects = fetchedAllSubjects;
}

public List<SubjectInfo> getSelectedFetchedSubs() {
return selectedFetchedSubs;
}

public void setSelectedFetchedSubs(List<SubjectInfo> selectedFetchedSubs) {
this.selectedFetchedSubs = selectedFetchedSubs;
}

public List getSubjectList() {
return subjectList;
}

public void setSubjectList(List subjectList) {
this.subjectList = subjectList;
}

public CourseInfo getCourseInfo() {
return courseInfo;
}

public void setCourseInfo(CourseInfo courseInfo) {
this.courseInfo = courseInfo;
}
public List getFetchedAllExamType() {
return fetchedAllExamType;
}

public void setFetchedAllExamType(List fetchedAllExamType) {
this.fetchedAllExamType = fetchedAllExamType;
}

public List getExamTypeList() {
return examTypeList;
}

public void setExamTypeList(List examTypeList) {
this.examTypeList = examTypeList;
}

public List<ExamType> getSelectedExmTypes() {
return selectedExmTypes;
}

public void setSelectedExmTypes(List<ExamType> selectedExmTypes) {
this.selectedExmTypes = selectedExmTypes;
}

public List getFetchedAllCourse() {
return fetchedAllCourse;
}

public void setFetchedAllCourse(List fetchedAllCourse) {
this.fetchedAllCourse = fetchedAllCourse;
}

public String getNextCourse() {
return nextCourse;
}

public void setNextCourse(String nextCourse) {
this.nextCourse = nextCourse;
}

public String getPreviousCourse() {
return previousCourse;
}

public void setPreviousCourse(String previousCourse) {
this.previousCourse = previousCourse;
}

public DAOInterface getDao() {
return dao;
}

public void setDao(DAOInterface dao) {
this.dao = dao;
}

public String getBtnPressed() {
return btnPressed;
}

public void setBtnPressed(String btnPressed) {
this.btnPressed = btnPressed;
}

public String getUpdateCourseId() {
return updateCourseId;
}

public void setUpdateCourseId(String updateCourseId) {
this.updateCourseId = updateCourseId;
}

public boolean getIsUpdate() {
return isUpdate;
}

public void setIsUpdate(boolean isUpdate) {
this.isUpdate = isUpdate;
}

public String showUpdateAjax(){
try{
System.out.println("Ajax calling...........");
showUpdateCourse();
}catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}

public String showUpdateCourse(){
try {
isUpdate=true;
courseInfo=dao.getCourse(Integer.parseInt(updateCourseId));
System.out.println(courseInfo.getCourseId());
selectedFetchedSubs=courseInfo.getSubjectList();
selectedExmTypes=courseInfo.getExamTypeList();
fetchedAllSubjects=dao.getAllSubjects();
fetchedAllExamType=dao.getActiveExamTypes();
for(ExamType exmType:selectedExmTypes)
for (int i = 0; i < fetchedAllExamType.size(); i++) {
if(exmType!=null&&((ExamType)fetchedAllExamType.get(i)).getExamTypeId()==exmType.getExamTypeId()){
fetchedAllExamType.remove(i);
break;
}
}
for(SubjectInfo subInfo:selectedFetchedSubs)
for (int i = 0; i < fetchedAllSubjects.size(); i++) {
if(subInfo!=null&&((SubjectInfo)fetchedAllSubjects.get(i)).getSubjectId()==subInfo.getSubjectId()){
fetchedAllSubjects.remove(i);
break;
}
}
} catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}

我也在项目中使用了spring和hibernate。在执行此操作时,当我单击调用 showUpdateAction.action 的链接时,我得到了如下响应

{}&& {"btnPressed":null,"courseInfo":{},"examTypeList":null,"fetchedAllCourse":[],"fetchedAllExamType":[],"fetchedAllSubjects":[],"isUpdate":true,"nextCourse":null,"previousCourse":null,"selectedExmTypes":[],"selectedFetchedSubs":[],"subjectList":null,"updateCourseId":"4"}

但是当我单击按钮时,它没有显示任何内容,但该函数被调用。此外,这里的 CourseInfo 是一个对象,其中有带有 setter getter 方法的变量,并且当调用 showUpdateAction.action 时该对象处于满状态,但在输出中我们可以看到 courseInfo 带有空花括号。请帮助解决这个问题我已经浏览了几篇文章并用谷歌搜索了很多。现在除了询问我别无选择。请帮忙

最佳答案

我看了你的代码(对struts一无所知),我注意到,

<action name="showUpdateAjax" class="courseCreateAction" method="showUpdateAjax">

你的ajax调用是,

"/SASIS/showUpdateAjax.action?updateCourseId=4"

我相信您的 Controller 是“courseCreateAction”,操作是“showUpdateAjax”,典型的 GET url 看起来像 /controller/action?param1=value1&param2=value2...

但是您的网址不包含 Controller 。

处理此请求的操作,

public String showUpdateAjax(){
try{
System.out.println("Ajax calling...........");
showUpdateCourse();
}catch (Exception e) {
e.printStackTrace();
}
return SUCCESS;
}

courseId 在哪里传递给 showUpdateAjax() ?

最后,就像 mprabhat 提到的那样,您已经绑定(bind)了按钮以在单击时触发 ajax 调用。所以不需要 onclick="refreshData()"

关于jquery - 无法使用 jQuery 加载 JSON 上的完整数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10708786/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com