【发布时间】:2011-06-19 22:44:05
【问题描述】:
我有一个带有 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<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;
}
我想在 Javascript 中使用 markerList 数组来创建标记。
这是 struts.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) {到最后,是创建de标记的JavaScript代码,这个没关系。问题出在ajax上,因为我无法通过json数据返回来获取markerList数组...我认为问题出在$ .ajax的url属性中...我尝试了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>
有人可以帮帮我吗?
【问题讨论】:
-
尝试使用 Firebug 查看 Ajax 请求和响应的详细信息。
-
同意上述观点,根据您的代码,您应该能够将浏览器指向“/test/LoadMarkers”并获得一个json页面/文件,如果您不这样做,那么没有多少JS会帮忙的。我说页面/文件是因为 FF 一般会生成一个文件来保存,而 Chome 会显示一个 json 页面。
-
哦!!!现在我遇到了这个问题!在 Google Chrome 中我可以显示 de Json 文件,在 IE 中我可以下载它,但我不想要这个!我想使用包含 json 的数据来创建标记!我该怎么做?我不明白你想说什么“你应该能够将你的浏览器指向 /test/LoadMarkers.... "
标签: jquery ajax json google-maps struts2