若忽略语句,则映射API存储数据函数
Maps API savedata function if statement ignored
我的存储数据有问题。。。它将数据保存到数据库中,并在地图上显示,所以基本上一切都正常,但当我保存标记的地址和名称,然后单击保存按钮时,我无法关闭它…
downloadUrl(url, function(data, responseCode) {
if (responseCode == 200 && data.length <= 1) {
infowindow.close();
document.getElementById("message").innerHTML = "Location added.";
}
从downloadUrl开始有一些不好的东西,似乎代码被忽略了,所以我发出了一个警报,让用户知道它被保存了。
如果有帮助的话,我会复制整个javascript(它还包括地理编码和样式图(:如果你愿意,我可以给你一个地图链接或任何你需要的东西。
var marker;
var infowindow;
var geocoder;
var map;
function initialize() {
geocoder = new google.maps.Geocoder();
var styles = [
{
"stylers": [
{ "hue": "#0055ff" },
{ "saturation": 90 },
{ "gamma": 0.39 },
{ "lightness": 48 },
{ "visibility": "on" },
{ "invert_lightness": true }
]
},{
"featureType": "road",
"stylers": [
{ "hue": "#ff4500" }
]
},{
"elementType": "labels",
"stylers": [
{ "hue": "#00ff6f" },
{ "gamma": 6.31 },
{ "weight": 0.2 }
]
}
];
var SajatMap = new google.maps.StyledMapType(styles,
{name: "Saját Map"});
var image=new google.maps.MarkerImage('resistance2.png',
new google.maps.Size(23, 30),
new google.maps.Point(0,0),
new google.maps.Point(0, 32));
var latlng = new google.maps.LatLng(47.495632, 19.044748);
var options = {
center: latlng,
zoom: 12,
mapTypeControlOptions: {
mapTypeIds: [google.maps.MapTypeId.ROADMAP, 'sajat_map']
}
};
map = new google.maps.Map(document.getElementById("map"), options);
var infoWindow = new google.maps.InfoWindow();
map.mapTypes.set('sajat_map', SajatMap);
map.setMapTypeId('sajat_map');
var html = "<table>" +
"<tr><td>Név:</td> <td><input type='text' id='name'/> </td> </tr>" +
"<tr><td>Hely:</td> <td><input type='text' id='address'/></td> </tr>" +
"<tr><td></td><td><input id='save' type='button' value='Mentés' onclick='saveData()'/></td></tr>";
infowindow = new google.maps.InfoWindow({
content: html
});
google.maps.event.addListener(map, "click", function(event) {
marker = new google.maps.Marker({
position: event.latLng,
map: map
});
google.maps.event.addListener(marker, "click", function() {
infowindow.open(map, marker);
});
});
downloadUrl("phpsqlajax_genxml.php", function(data) {
var xml = data.responseXML;
var markers = xml.documentElement.getElementsByTagName("marker");
for (var i = 0; i < markers.length; i++) {
var name = markers[i].getAttribute("name");
var address = markers[i].getAttribute("address");
var point = new google.maps.LatLng(
parseFloat(markers[i].getAttribute("lat")),
parseFloat(markers[i].getAttribute("lng")));
var html = "<b>" + name + "</b> <br/>" + address;
marker = new google.maps.Marker({
map: map,
icon:image,
position: point
});
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);
});
}
function saveData() {
var name = escape(document.getElementById("name").value);
var address = escape(document.getElementById("address").value);
var latlng = marker.getPosition();
var url = "phpsqlinfo_addrow.php?name=" + name + "&address=" + address +
"&lat=" + latlng.lat() + "&lng=" + latlng.lng();
alert('Successfully saved!');
downloadUrl(url, function(data, responseCode) {
if (responseCode == 200 && data.length <= 1) {
infowindow.close();
document.getElementById("message").innerHTML = "Location added.";
}
});
}
function codeAddress() {
var address = document.getElementById("kereso").value;
geocoder.geocode( { 'address': address}, function(results, status) {
if (status == google.maps.GeocoderStatus.OK) {
map.setCenter(results[0].geometry.location);
var marker = new google.maps.Marker({
map: map,
position: results[0].geometry.location
});
} else {
alert("Sikertelen. A probléma oka: " + status);
}
});
}
function downloadUrl(url, callback) {
var request = window.ActiveXObject ?
new ActiveXObject('Microsoft.XMLHTTP') :
new XMLHttpRequest;
request.onreadystatechange = function() {
if (request.readyState == 4) {
request.onreadystatechange = doNothing;
callback(request, request.status);
}
};
request.open('GET', url, true);
request.send(null);
}
function doNothing() {}
这个问题很老,但我来找同样的问题,我找到了答案,所以它可能会帮助其他人。
您的代码可能来自https://developers.google.com/maps/articles/phpsqlinfo_v3
在那里,它说作为if (responseCode == 200 && data.length <= 1)
:使用的解释
- 检查返回的状态代码是否为200。这意味着文件已成功检索,我们可以继续处理
- 检查返回的数据字符串的长度-空数据文件表示请求没有生成错误字符串。如果长度为零,则可以关闭信息窗口并输出成功消息
如果你从downloadUrl(url, function(data, responseCode) {
记录data
,你会发现他们在那里犯了一个错误:
记录data
对象显示:XMLHttpRequest {statusText: "OK", status: 200, response: "", responseType: "", responseXML: null…}
在我看来,他们的意思是response: ""
:如果有错误,它就会进去。因此,如果data.response.length < 1
,则表示没有错误。
我对Javascript还很陌生,所以如果错了就纠正我,但这对我来说很好:
downloadUrl(url, function(data, responseCode) {
if (responseCode == 200 && data.response.length <= 1) {
infowindow.close();
document.getElementById("message").innerHTML = "Location added.";
}
});
您说对话框没有关闭,这向我表明条件
responseCode == 200 && data.length <= 1
即将出现CCD_ 8。
这可能是因为从服务器返回的响应有多个字符,所以data.length <= 1
是false
(因为该条件是true
,仅适用于长度为1、0或负的消息(。验证您的回复是否最多包含一个字节的内容。
也许您实际上是想测试非空消息,即data.length >= 1
。现在,您只允许关闭一个字节或更短的响应;我猜您真的想允许一个一字节或更长
- 在页面卸载时写入HTML5 FileSystem API存储
- javascript api,用于在第三方域上存储身份验证令牌
- Chrome存储API无法使用内容脚本
- 如何将Facebook Graph API响应存储为Javascript数组
- 如何使用 github api 查找最新的存储库
- 围绕web存储的Javascript API包装器
- html5文件api,将用户选择的目录存储在sessionStorage中
- 如何存储推特搜索API推文并转发它们
- 正在尝试上载使用HTML5Fileneneneba API存储的文件
- 我可以将Google API的XML以字符串形式存储在Javascript中吗
- Angular,GitHub API,返回存储库和标签
- 谷歌地图 API 中的存储标记和中心地图
- 将谷歌地图 api latLng 坐标存储到 js 数组
- 使用 JavaScript 和 Google Chrome API 将剪贴板数据存储到变量中
- 使用Laravel作为API存储数据,并带有ajax功能
- 使用HTML5文件API存储/检索文件中的加密文本
- 离线应用:使用HTML5文件系统API存储MySQL数据库
- METEOR:从外部api存储数据失败
- MozillaWebExtensionneneneba API存储-带断点和不带断点的调试会导致不同的输出
- 若忽略语句,则映射API存储数据函数