【发布时间】:2012-12-19 06:07:03
【问题描述】:
我到处搜索并尝试寻找其他问题的原因,但无济于事。 我有一个用于检索 xml 数据的搜索表单,并且返回的数据很好。
响应标头
Content-Type text/xml;charset=utf-8 日期 周五,1 月 4 日 2013 19:00:52 GMT 服务器 Apache 传输编码通过 1.1 分块 decfpxy1 (NetCache NetApp/6.0.2)
回复:
<markers><marker id="1" lat="48.153938" lng="17.108459" /></markers>
但是我的 data 变量没有在我的脚本中插入任何加载标记的内容,我得到了这个错误:
TypeError: xml is undefined [Break On This Error]
var 标记 = xml.documentElement.getElementsByTagName("marker");
这是代码:
function SendData() {
var FromDateUnformatted = $('#from').val().split('/');
var FromDate = FromDateUnformatted[2] + '-' + FromDateUnformatted[0] + '-' + FromDateUnformatted[1] + ' 00:00:00';
var ToDateUnformatted = $("#to").val().split('/');
var ToDate = ToDateUnformatted[2] + '-' + ToDateUnformatted[0] + '-' + ToDateUnformatted[1] + ' 23:59:59';
var MusicStyles = $("#music").val();
var Locations = $("#locations").val();
var FromPrice = $("#entrance-price").slider("values", 0);
var ToPrice = $("#entrance-price").slider("values", 1);
var IsOutdoors = +$('#IsOutdoors').is(':checked');
var HasPatio = +$('#HasPatio').is(':checked');
$.ajax({
type: "POST",
url: "MapSearchxml.php",
data: {
dataFromDate: FromDate,
dataToDate: ToDate,
dataMusicStyles: MusicStyles,
dataLocations: Locations,
dataFromPrice: FromPrice,
dataToPrice: ToPrice,
dataIsOutdoors: IsOutdoors,
dataHasPatio: HasPatio
},
beforeSend: function (html) { // this happens before actual call
$("#results").html('Please Wait');
$("#searchresults").show();
$(".phpFromDate").html(FromDate);
},
success: function (data) {
//clearOverlays();
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("id");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")), parseFloat(markers[i].getAttribute("lng")));
var html = "<b>" + point + "</b>hello <br/>";
var icon = new google.maps.MarkerImage("redmarker.png");
var marker = new google.maps.Marker({
map: map,
position: point,
icon: icon.icon,
shadow: icon.shadow
});
bindInfoWindow(marker, map, infoWindow, html);
}
}
});
function bindInfoWindow(marker, map, infoWindow, html) {
google.maps.event.addListener(marker, 'click', function () {
infoWindow.setContent(html);
infoWindow.open(map, marker);
});
}
}
这是 PHP 文件本身:
$result = mysql_query($query);
if (!$result) {
die('Invalid query: ' . mysql_error());
}
header("Content-type: text/xml");
echo '<markers>';
while ($row = @mysql_fetch_assoc($result)){
echo '<marker ';
echo 'id="' . parseToXML($row['ID']) . '" ';
echo 'lat="' . parseToXML($row['LAT']) . '" ';
echo 'lng="' . parseToXML($row['LNG']) . '" ';
echo '/>';
}
echo '</markers>';
我已使用此代码的变体来检索静态 xml php 文件而没有任何问题,但使用此代码,我无法从这篇文章中获取结果并将它们正确插入到我的标记生成器中。
我在这里和谷歌上进行了大量研究,但似乎在任何地方都找不到任何替代方案。
你知道问题可能是什么吗?
谢谢
【问题讨论】:
-
您是否尝试将浏览器指向动态生成的 XML?它有效吗?从your previous question 的答案来看,您似乎想使用:
var xml = data,而不是 data.responseXML。 -
嘿 geocodezip,everything looks good.
-
这对我来说看起来不正确:
<markers><marker id="" lat="" lng="" /></markers>。可能是有效的 XML,但不会显示标记。实际查询是否返回数据?您的代码是否正确处理了这种情况? -
我也被它弄糊涂了,因为我的查询是这样写的
if(mysql_num_rows($result) > 0),但是you can go here,将from日期设置为1 月3 日并点击地图搜索。我现在有一个新错误,但是您可以在 Firebug 中看到帖子结果。
标签: jquery ajax google-maps google-maps-api-3