未捕获的TypeError:无法读取null的属性“ 0”-传单

时间:2019-04-14 21:29:40

标签: javascript ajax leaflet

我正在尝试通过JS + AJAX更新我的传单地图,但传单向我返回错误Uncaught TypeError:无法在leaflet.js:5上读取null的属性'0'

我有一个函数,它从服务器获取数据,一切正常,当我调用函数getData时,我得到了数据,函数printRoute将数据写入了“ test”元素,但是L.polyline([...仍然返回错误。数据(xhttp.responseText的输出)格式正确,L.polyline需要 ( [ 49.999319, 13.897081 ], [ 49.997681, 13.905933 ], ... , [ 49.996141, 13.913901 ], [ 49.994664, 13.921527 ] )

当我仅在服务器上,仅使用PHP而没有AJAX时,一切正常。 拜托,您有什么提示吗?

function getData( url, cFunction, postedData ) {
  var xhttp;
  xhttp = new XMLHttpRequest();
  xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
      cFunction( this );
    }
  };
  xhttp.open( "GET", url, true );
  xhttp.send();
}

function printRoute( xhttp ) {
  document.getElementById("test").innerHTML = xhttp.responseText;
  var route = L.polyline([ xhttp.responseText ], {color: 'red'} ).addTo(map);
} 

1 个答案:

答案 0 :(得分:0)

从服务器经过的坐标以数组符号表示,但是xhttp.responseText属性实际上是String类型。折线函数正在寻找一个数组数组,但越过单个字符串的数组。

['[ 49.999319, 13.897081 ], [ 49.997681, 13.905933 ]']

代替

[[ 49.999319, 13.897081 ], [ 49.997681, 13.905933 ]]

配置服务器以返回正确的json对象来解决此问题。

不建议使用eval('[' + xhttp.responseText + ']')将字符串转换为数组,因为它会在您的代码中创建安全漏洞。