Javascript 未捕获(承诺中)类型错误:无法读取属性';长度';未定义的
我第一次使用xammp时,服务器运行良好,然后关闭服务器,再次启动服务器并执行脚本,这是我出错的地方 未捕获(承诺中)TypeError:无法读取未定义的属性“length” 我试图先运行xmlhttp,然后绘制google地图Javascript 未捕获(承诺中)类型错误:无法读取属性';长度';未定义的,javascript,google-maps,asynchronous,Javascript,Google Maps,Asynchronous,我第一次使用xammp时,服务器运行良好,然后关闭服务器,再次启动服务器并执行脚本,这是我出错的地方 未捕获(承诺中)TypeError:无法读取未定义的属性“length” 我试图先运行xmlhttp,然后绘制google地图 var myObj={}; var xmlhttp = new XMLHttpRequest(); xmlhttp.onreadystatechange = function() { if (this.readyState == 4 && thi
var myObj={};
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
myObj = JSON.parse(this.responseText);
console.log(myObj);
}
};
xmlhttp.open("POST", "tPHP.php", true);
xmlhttp.send();
function initMap() {}
$(() => {
initMap = function() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 17,
center: {lat: 8.650263, lng: -82.944570}
});
pintaMapa(map);
}
})
function pintaMapa(map) {
var datos= myObj["Posiciones"];
// console.log(datos);
var image = {
url: 'iconoHospital.png',
scaledSize : new google.maps.Size(50, 50),
};
for (var i = 0; i < datos.length; i++) {
var marker = new google.maps.Marker({
position: {lat: parseFloat( datos[i].latitud), lng:parseFloat(datos[i].longitud)},
map: map,
title: datos[i].nombre,
id: datos[i].id,
direccion:"Barrio el invu "+ datos[i].nombre,
icon: image
});
}
}
var myObj={};
var xmlhttp=new XMLHttpRequest();
xmlhttp.onreadystatechange=函数(){
if(this.readyState==4&&this.status==200){
myObj=JSON.parse(this.responseText);
console.log(myObj);
}
};
open(“POST”,“tPHP.php”,true);
xmlhttp.send();
函数initMap(){}
$(() => {
initMap=函数(){
var map=new google.maps.map(document.getElementById('map'){
缩放:17,
中心:{lat:8.650263,lng:-82.944570}
});
平塔马帕(地图);
}
})
pintaMapa功能(地图){
var datos=myObj[“Posiciones”];
//控制台日志(datos);
变量图像={
url:'iconoospital.png',
scaledSize:新的google.maps.Size(50,50),
};
对于(变量i=0;i
解决方案:
function initMap() {
var map = new google.maps.Map(document.getElementById('map'), {
zoom: 17,
center: {lat: 8.650263, lng: -82.944570}
});
datoss("tPHP.php",function (data){
var myObj = JSON.parse(data.responseText);
var datos= myObj["Posiciones"];
console.log(datos);
var image = {
url: 'iconoHospital.png',
scaledSize : new google.maps.Size(50, 50),
};
for (var i = 0; i < datos.length; i++) {
var marker = new google.maps.Marker({
position: {lat: parseFloat( datos[i].latitud), lng:parseFloat(datos[i].longitud)},
map: map,
title: datos[i].nombre,
id: datos[i].id,
direccion:"Barrio el invu "+ datos[i].nombre,
icon: image
});
google.maps.event.addListener(marker, 'click', function () {
alert(this.direccion);
});
}
});
}
function datoss(url,callback) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readyState == 4) {
xmlhttp.onreadystatechange = doNothing;
callback(xmlhttp, xmlhttp.status);
}
};
xmlhttp.open('GET', url, true);
xmlhttp.send();
}
function doNothing() {}
函数initMap(){
var map=new google.maps.map(document.getElementById('map'){
缩放:17,
中心:{lat:8.650263,lng:-82.944570}
});
datoss(“tPHP.php”),函数(数据){
var myObj=JSON.parse(data.responseText);
var datos=myObj[“Posiciones”];
控制台日志(datos);
变量图像={
url:'iconoospital.png',
scaledSize:新的google.maps.Size(50,50),
};
对于(变量i=0;i
你能console.log(datos)
看看你得到了什么吗?包括错误行号和其他相关信息。console.log(datos)不是空的,但我清理了浏览器并重新运行脚本,不要显示错误如果你在pintaMapa
中记录datos
,你得到了什么?在加载map
(运行initMap
函数,这很可能是Google Maps Javascript API v3的回调函数,但您的问题中没有包括该函数)和在运行的异步XMLHttpRequest回调函数中返回的结果之间存在竞争条件。