JavaScript プログラムで、ファイル内のデータからグローバル 3 プロパティ配列オブジェクトを埋めようとしています。プログラムがうまく動かなかったのでデバッグを試みたところ、Firefoxの内部デバッガーを使用して実行すると動作することがわかりました。そこでFirebugを使ってみたのですが、Firebugがフリーズしてしまいました。単純な「アラート」挿入に戻って、「アラート」を追加すると実行が成功したが、不可解な「アラート」メッセージが表示されることがわかりました-配列の長さは、配列作成サブルーチン内では問題ないように見えますが、ルーチンの外ではゼロです。おそらく私は何か間違ったことをしていますが、この動作に困惑しているので、ここで助けを求めています(初めてのユーザーとして)。FWIW JQuery を使用してデータを読み取っています。以下がプログラムの要点です。
var nodedata = new Array();
nodedata = [];
// use routine to fill array
requestNodeData();
alert('POST requestNodeData nodedata.length=' + nodedata.length);
// create markers
for (var index in nodedata) addMarker(nodedata[index], index);
alert('POST index Loop nodedata.length=' + nodedata.length);
...
function requestNodeData() {
var formData = $('#form').serialize();
$.post('/cgi-bin/get_nodedata.cgi', formData, processNodeData, 'text').error(processNodeDataError);
return false; // this prevents form button submission
}
function processNodeData(data) {
var strings = new Array(3);
datalines = data.split(/\n/);
for (var i = 0; i < (datalines.length); i++) {
strings = datalines[i].split(/,/);
nodedata[i] = {
'lat': strings[0],
'lng': strings[1],
'name': strings[2]
};
}
alert('END OF requestNodeData nodedata.length=' + nodedata.length);
}
注: 「END OF requestNodeData」アラートは常に予想される配列サイズを示します。「POST requestNodeData」アラートを追加すると、プログラムが正常に動作します。しかし、配列サイズは「0」であり、予想される配列サイズではありません!? 「POST requestNodeData」アラートが省略されている場合、「POST index Loop」は0を返しますが、そのアラートが含まれている場合は予想される配列サイズを示します