郵便番号の入力が必要なインターフェイスがあり、入力されたzipに基づいてリモートサイトから経度と緯度をクエリし、以前クエリされた経度と緯度に基づいて一部の人口情報を照会します。私は3つの異なるサイトを照会するために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)を見てください。 –