Как получить данные от действия struts2 с помощью jQuery? - PullRequest
1 голос
/ 02 февраля 2011

У меня есть веб-сайт Struts2 с GoogleMaps.Я хочу загрузить список маркеров, которые сохраняются в 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<marker> markersList = new ArrayList<marker>();

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;
}

Я хочу использовать массив markerList в Javascript для создания маркеров.

Это распорки.XML-файл:

<package name="jsonActions" namespace="/test" extends="json-default">
    <action name="LoadMarkers" class="web.localizadroid.maps.loadMarkers">
    <interceptor-ref name="basicStack"/>
        <result type="json">
        <param name="root">markersList</param>
        </result>
    </action>
</package>

И вот вам код 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://i53.tinypic.com/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) { до конца есть код JavaScriptсоздать де маркеры, и это нормально.Проблема в ajax, потому что я не могу получить массив markerList Array с помощью возврата данных jSon ... Я думаю, что проблема в атрибуте url из $ .ajax ... Я пробовал loadMarkers.action и loadMarkers, но ничегослучается.Когда я запускаю Интернет, печатается только предупреждение alert("dentro"), предупреждение alert(data) никогда не печаталось.

Я забыл добавить код, где я вызываю функцию Javascript (loadMarkersJ).Вот вы:

<p><s:a  action="LoadMarkers.action" namespace="/test" onclick="loadMarkersJ(this)">Cargar Marcadores S</s:a></p>

Кто-нибудь может мне помочь, пожалуйста?

Ответы [ 3 ]

2 голосов
/ 02 февраля 2011

Рассматривали ли вы возможность использования плагина Struts2-jQuery Это ДЕЙСТВИТЕЛЬНО упрощает разработку ajax с Struts2, использовал его сам

0 голосов
/ 17 декабря 2013

Добавить return false после вызова функции javascript.

<p><s:a  action="LoadMarkers.action" namespace="/test" onclick="loadMarkersJ(this); return false;">Cargar Marcadores S</s:a></p>

Проверьте это:

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

0 голосов
/ 14 декабря 2011

Почему мы не можем просто предоставить информацию о типе контента в JSP. У меня это работает.

Нам не нужно загружать плагин для реализации поддержки JSON для действий Struts.

Мы можем просто скачать любой json конвертер, например GSON. Используйте следующие, чтобы преобразовать ваш объект в формат JSON.

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

В вашем успехе JSP

<%@ taglib prefix="s" uri="/struts-tags"%>
<%@page contentType="application/json" %>
<s:property value="json" escape="false"/>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...