簡単に言うと、AJAX を返す JSON から対応するデータ値をこれらのグローバル配列に格納しようとしています。AJAX 内にアラートを配置したため、配列が正しく構築されていることはわかっていますが、AJAX の外に配置すると、配列はまだ定義されていません。
popData JSON オブジェクト全体をエクスポートして動作させ、値をグローバル配列に保存するか、AJAX で配列のデータを取得して呼び出しの外で実行するにはどうすればよいですか? 人口値をユーザーが選択した狭い範囲の値と比較するために、これらの配列に別の関数からアクセスできるようにする必要があります。すでに HTML で行われています。これは、サーバーでの AJAX 呼び出しを最小限に抑えてそれを行うための最も合理的な方法だと思いますが、提案は受け付けています。:D
var popProducers = new Array();
var popProducersCount = new Array();
function getPopulationInfo(){
$.ajax({
url:phpURL,
cache:false,
dataType:"json",
data: { },
success:function(popData){
for (i=0;i<popData.length;i++){
//producers and producersCount should be the same length at all times!
//If current producer name isn't in array already
if(popProducers.indexOf(popData[i].ProducerName) == -1){
//add new element to represent new producer quantity (producerCount.length returns number of elements in the array, thus if there are no elements = 0 thus making index 0 equal to 1 and so on)
popProducersCount[popProducersCount.length] = 1;
//Adds the producer name to the list of producers
popProducers[popProducers.length] = popData[i].ProducerName;
} else {
//Otherwise, it will increment the index of the producersCount array corresponding with the pre-existing producer name's index by 1
popProducersCount[popProducers.indexOf(popData[i].ProducerName)] += 1;
}
}
}
});
alert("Population Data Alert: " + popProducers);