我正在尝试通过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);
}
答案 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 + ']')
将字符串转换为数组,因为它会在您的代码中创建安全漏洞。