getJSONのJSONデータをドロップダウンに入力しています。getJSON操作が成功した後、data.lengthは未定義です
ポピュレーションは正常に動作していますが、data.length
と比較して終了していることを確認しようとすると、data.length
はundefined
で動作しません。
{
"1": {
"id": "1",
"name": "Plymouth"
},
"2": {
"id": "2",
"name": "Torquay"
}
}
私のコードは次のようになります:よう
データが見えますこのセクション
$('.locationList').empty();
$('.locationList').append('<option value="">Select...</option>');
$.getJSON('/Settings/locations.txt', function (data) {
var dataNum = data.length;
var counter = 1;
$.each(data, function (i, item) {
$('.locationList').append('<option value="' + data[i].id + '">' + data[i].name + '</option>');
if (counter >= dataNum) {
$('#bookTo').val(locationID + 1);
$('#transferFrom').val(locationID);
};
counter++;
});
});
:
if (counter >= dataNum) {
$('#bookTo').val(locationID + 1);
$('#transferFrom').val(locationID);
};
counter++;
は私がドロップの値をあらかじめ設定することを可能にするためのものです$.each
ループが完了すると(これは他のリストでもうまくいきます)、しかし、それは起こっていません。
私はalert(data.length)
を実行すると、私ははっきりとそれはそれがない$.each
を通じて適切にドロップダウンボックスを移入するためにlength
を持っているdata
としても意味がありませんundefined
を入手! EDITは
:申し訳ありませんが、追加する必要があり、変数locationID
は、以前のスクリプトでクッキーから宣言され、有効である
[JavaScriptオブジェクトのリテラルの長さ===未定義?](http://stackoverflow.com/questions/4690520/javascript-object-literal-length-undefined)の可能な複製 'data'はオブジェクトであり、文字列ではありませんまたは配列である。オブジェクトは 'length'プロパティを公開しません。 –
jQueryの.each()関数のインデックス値を持つとき、正確に 'dataNum'変数が必要なのはなぜですか? – adeneo
'$ .each'がいつ終了したのかを判断するにはdataNum変数が必要です。なぜなら、ドキュメント内に何が表示されているにもかかわらず、そうでなければドロップダウンボックスの値の選択は完全に行われる前に起こるからです。 –