У меня есть интерфейс, который нужен пользователю для ввода почтового индекса, затем я буду запрашивать долготу и широту с удаленного сайта на основе введенного почтового индекса, а затем запрашивать некоторую информацию о населении на основе предыдущей запрашиваемой долготы и широты. Мне нужно 3 XMLhttpRequest() для запроса трех разных сайтов. Каждый запрос будет основываться на предыдущих запрошенных данных. Я думаю, что в моем коде могут быть проблемы с обратным вызовом, я не знаю, как это исправить.XMLHttpRequest с несколькими запросами
<input type="submit" value="Get City" onclick="getInfo()">
<script>
function getInfo(getGeoCode) {
var zipCode = document.getElementById("inputtext").value
var xmlReq = new XMLHttpRequest();
xmlReq.open("GET", "http://api.zippopotam.us/us/" + zipCode, true);
xmlReq.onreadystatechange = function() {
if (xmlReq.readyState == 4) {
var temp = JSON.parse(xmlReq.responseText);
var lat = temp.places[[0]].latitude ;
var logt = temp.places[[0]].longitude;
getGeoCode(lat, logt);
};
};
xmlReq.send();
}
function getGeoCode(lat,logt,getpop) {
var nereq = new XMLHttpRequest();
nereq.open("GET", "https://data.fcc.gov/api/block/find?&latitude=" + lat + "&longitude=" + logt + "&showall=false&format=json", true);
nereq.onreadystatechange = function() {
if (nereq.readyState == 4) {
var temp2 = JSON.parse(nereq.responseText);
var stateCode = temp2.State.FIPS;
var contyCode = temp2.County.FIPS;
getpop(stateCode, contyCode);
};
};
nereq.send();
}
function getpop(stateCode, contyCode) {
var nereq2 = new XMLHttpRequest();
nereq2.open("GET", "http://api.census.gov/data/2010/sf1?get=P0010001&for=county:" + contyCode + "&in=state:" + stateCode, true);
nereq2.onreadystatechange = function() {
if (nereq2.readyState == 4) {
var temp3 = JSON.parse(nereq.responseText);
document.getElementById("fs").innerHTML = temp3;
};
};
nereq2.send();
}
</script>
Вы не проходящих третьего аргумента в 'getGeoCode' .. Просто используйте' функцию getGeoCode (латы, logt) 'поскольку' getpop' находится в глобальном контексте .. Вы не можете вызывать 'undefined' – Rayon
Взгляните на Promises и [fetch api] (https://developer.mozilla.org/en/docs/Web/API/Fetch_API) –