0

私の目標は、結果の配列を反復処理してデータを操作することですが、何らかの理由で javascript の foreach ループを機能させることができず、列挙を機能させることができないようです。

これが私のテストです

console.debug("I got this far.");
for(var i=0;i< results.length; i++){
    console.debug("Worked.");
}
console.debug("Past.");
console.debug(results);

私も試してみました

results.forEach(function(x) { console.debug("Worked"); });

for(var x in results)

何も機能していないようです。何か間違っていますか?

上記の出力は

I got this far.  query.html:39
Past.            query.html:40
[ Object , Object , Object , Object , Object , Object , Object , Object , Object , Object ]

したがって、結果変数が正しい型であることはわかっていますが、反復していません。forEach() が正常に機能する別の場所がありますが、ここではそうではありません。これをデバッグして対処する方法についての提案は役に立ちます。

完全なコード (WORKING SOLUTION)

var table;
var request = { query : { match_all : {}}};
var map;
function initialize(results) {
    var myOptions = {
      zoom: 8,
      center: new google.maps.LatLng(41.4, -71.3),
      mapTypeId: google.maps.MapTypeId.ROADMAP
    };
    map = new google.maps.Map(document.getElementById('map_canvas'),
        myOptions);
    results.forEach(function(x) {
      var markerLoc = new google.maps.LatLng(x.location.lat, x.location.lon);
      var marker = new google.maps.Marker({
        position: markerLoc,
        map: map,
        title: "Hello World!"
        });
      });

};
$(document).ready(function() {
        var results = [];
        $.ajax({
            url: "http://localhost:9200/devices/devices/_search",
            type: "POST",
            data: JSON.stringify(request),
            dataType: "json",
            beforeSend: function(x) {
                if ( x && x.overrideMimeType) {
                    x.overrideMimeType("application/j-son;charset=UTF-8");

                    }
            },
            success: function(data) { 
                data.hits.hits.forEach(function(x) { results.push(x._source); } );
                initialize(results);
            }

        });

});
4

1 に答える 1

1

Ajax リクエストが送信されるとすぐに に渡さresultsれます。応答が戻ってくるのを待っているわけではないので、それを入力するコードは手遅れになるまで起動しません。initialize

呼び出しを移動して、ハンドラーinitialize内に配置します。success

于 2012-04-11T15:25:59.907 に答える