首先,我声明一个数组来存储我返回的数据和一个变量,以保存用于测试目的的原始JSON数据。AJAX调用后无法在JavaScript中的函数之间共享数据
<script>
var XMLdataResult;
var arrayOfShelters = [];
我已经成功称为在使用利用AJAX请求一个PHP页面从MySQL对象的数组。在AJAX请求期间,我可以通过alert()显示我的数据,并验证我的数据确实到达了目的地。
//RETRIEVE MARKER DATA
//Import JSON data into a variable.
var dataXMLhttp = new XMLHttpRequest();
dataXMLhttp.open("GET", "./js/returnData.php", true);
dataXMLhttp.send();
dataXMLhttp.onreadystatechange=function(){
if(dataXMLhttp.readyState == 4 && dataXMLhttp.status == 200){
//the response is stored in a variable
var XMLdataResult = dataXMLhttp.responseText;
var arrayOfShelters = eval(XMLdataResult);
//Data successfully output here
window.alert("Inside AJAX Call" + arrayOfShelters);
//function called
setShelters();
}
}
在这一点上,我试图直接输出我的数组和我的原始数据没有成功。
window.alert(arrayOfShelters);
似乎返回一个空字符串。
window.alert("setShelters()" + XMLdataResult);
返回未定义。
这是由于我的以下功能也无法访问任何数据。
function setShelters(){
if(arrayOfShelters){
//the response is stored in a variable
for(i=0; i < arrayOfShelters.length; i++){
var myLatLng = new google.maps.LatLng(arrayOfShelters[i].lat, arrayOfShelters[i].lng);
var shelterOptions = {
position : myLatLng,
map : mapCanvas,
description : arrayOfShelters[i].title,
icon: 'http://maps.google.com/mapfiles/ms/icons/blue-dot.png',
};
//create marker
this ['shelter' + i] = new google.maps.Marker(shelterOptions);
}
window.alert("setShelters()" + XMLdataResult);
window.alert("setShelters()" + arrayOfShelters);
}
}
</script>
我可能错过了一些非常基本的东西,因为我仍然是一个绿色的号角。我假设可能的冲突,以前的ajax调用脚本可能会导致问题?我对数据流和功能的理解可能是问题。
感谢您的阅读。
在您的ajax响应中,您正在做var arrayOfShelters,但您之前已经声明了您的arrayOfShelters变量。你不需要再做“var”,这样做就是在你的ajax响应中声明一个新的变量。和XMLdataResult一样 –
这么简单,它伤害。随意发布它作为答案,我接受它。 @JVLobo – DMrFrost
很棒@DMrFrost我会做的 –