未捕获(承诺)TypeError:无法读取未定义的属性“长度”

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了未捕获(承诺)TypeError:无法读取未定义的属性“长度”相关的知识,希望对你有一定的参考价值。

我正在使用xampp第一次运行服务器运行良好,然后关闭服务器并再次启动服务器并执行脚本是我遇到错误的地方。

未捕获(承诺)TypeError:无法读取未定义的属性“长度”

我试图先运行xmlhttp,然后绘制谷歌地图。

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
    });
  }
}
答案

解:


   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() {}

以上是关于未捕获(承诺)TypeError:无法读取未定义的属性“长度”的主要内容,如果未能解决你的问题,请参考以下文章

未捕获(承诺)TypeError:无法读取未定义的属性“长度”

未捕获(承诺):TypeError:无法读取未定义的属性“创建”(离子 3.9,Angularjs 5.0.3)

错误:`未捕获(承诺中)类型错误:无法读取未定义的属性'doc'`

未捕获(承诺中)类型错误:无法读取未定义的属性“协议”

如何修复此错误:未捕获(承诺)类型错误:无法读取未定义的属性(读取“长度”)

错误::未捕获(承诺中)类型错误:无法读取未定义的属性“内容”