如何使用jQuery从struts2动作获取数据?

我有一个带有GoogleMaps的Struts2 Web。 我想加载保存在SQL DDBB中的标记列表。 为此,我尝试使用jQuery和Ajax。 这是你的代码:

loadMarkers.java

public class loadMarkers extends ActionSupport implements ServletRequestAware,ServletResponseAware{ //Variables de sesion/cookie FunctionClass ses; protected HttpServletResponse servletResponse; protected HttpServletRequest servletRequest; private String userID=""; //Variables del marker private List markersList = new ArrayList(); public String execute() throws Exception{ FunctionClass friends = new FunctionClass(); //Leemos de la cookie for(Cookie c : servletRequest.getCookies()) { if (c.getName().equals("userID")) userID = (c.getValue()); } System.out.println("en el loadMarkers"); connectionBBDD con = new connectionBBDD(); markersList = con.loadMarkers(userID); return SUCCESS; } 

我想在Javascript中使用markerList数组来创建标记。

这是struts.xml文件:

     markersList    

在这里你是Javascript(jQuery)代码:

 function loadMarkersJ(){ alert("dentro"); $.ajax({ type : "post", url : "LoadMarkers", dataType: "json", success : function(data) { alert(data); var image = new google.maps.MarkerImage ('http://sofzh.miximages.com/jquery/ettquh.png'); var jSon_Object = eval("(" + data + ")"); //For para analizar los datos (Json) obtenidos de la BBDD for (x = 0; x < jSon_Object.length; x++) { var markersArray = []; var myLatlng = new google.maps.LatLng(jSon_Object[x].lat, jSon_Object[x].lon); markerLoaded = new google.maps.Marker( { position : myLatlng, map : map, icon: image, title: "NOMBRE: " + jSon_Object[x].tarjetName + "\n" + "ANOTACIONES: " + jSon_Object[x].anotaciones + "\n" + "TIME: " + jSon_Object[x].time }); markersArray.push(markerLoaded); if (markersArray) { for (i in markersArray) { alert("entro en forColocaMarkers"); if (markersArray[i].getAnimation() != null) { markersArray[i].setAnimation(null); } else { markersArray[i].setAnimation(google.maps.Animation.BOUNCE); } markersArray[i].setMap(map); } } } } }); 

}

success : function(data) {到最后,是创建de标记的JavaScript代码,这没关系。 问题是ajax,因为我没有通过jSon数据返回获取markerList数组…我认为问题出在$ .ajax的url属性中……我尝试了loadMarkers.action和loadMarkers,但没有发生。 当我执行Web时,只打印警报alert("dentro") ,从未打印过警报alert(data)

我忘了在我调用Javascript函数(loadMarkersJ)的地方添加代码。 这个给你:

 

Cargar Marcadores S

有人可以帮帮我吗?

您是否考虑过使用Struts2-jQuery插件它真的简化了Struts2的ajax开发,我自己使用它

为什么我们不能只在JSP中提供内容类型信息。 这个对我有用。

我们不需要下载任何插件来实现对struts操作的JSON支持。

我们可以下载像GSON一样的任何json转换器。 使用以下命令将对象转换为json格式。

 Gson gson = new Gson(); json = gson.toJson(events); return SUCCESS; 

在你的成功JSP

 <%@ taglib prefix="s" uri="/struts-tags"%> <%@page contentType="application/json" %>  

在javascript函数调用后添加return false

 

Cargar Marcadores S

看一下这个:

https://stackoverflow.com/a/20217387/1360694