需要帮助添加到Javascript数组对象并插入命令

时间:2011-09-14 15:43:12

标签: javascript jquery ajax arrays

我有以下代码:

$("#map4").gMap({ markers: [ 
                             { address: "Tettnang, Germany",
                               html: "The place I live" },
                             { address: "Langenargen, Germany",
                               html: "_address" }],
                  address: "Braitenrain, Germany",
                  zoom: 10 });

需要动态填充markers数组。我正在调用ajax并使用json数组返回。所以我必须遍历它并存储地址和html(html是多个数组元素的串联字符串)。

所以这是我的完整代码:

var markers = new Object();
$.post(
    custom.ajaxurl, 
    { 
        action:'get_current_events'
    }, 
    function(jdata) {
        $.each(jdata, function(i, data){
            markers += "{ 'address': '" + data.address + "', 'html': '" + data.html + "'},";
        });

        $('#map_canvas').gMap({markers: markers.marks ,address: jdata[0].address, zoom: 10 });

3 个答案:

答案 0 :(得分:1)

markers似乎是一个对象数组。我不明白你为什么要进行字符串连接。您可以使用$.map [docs]从回复中提取必要的信息:

$.post(custom.ajaxurl, {action:'get_current_events'}, function(jdata) {
        var markers = $.map(jdata, function(data) {
            return {address: data.address, html: data.html};
        });
        $('#map_canvas').gMap({
            markers: markers,
            address: jdata[0].address,
            zoom: 10 
        });
});

MDN JavaScript Guide是对JavaScript的非常好的介绍。

答案 1 :(得分:1)

您正在尝试创建数组,而不是对象或字符串:

var markers = [];  //Empty array

markers.push({ address: data.addres, ... });

答案 2 :(得分:0)

你应该做(你需要一个对象数组):

var markers = [];
$.post(
    custom.ajaxurl, 
    { 
        action:'get_current_events'
    }, 
    function(jdata) {
        $.each(jdata, function(i, data){
            var marker = { address: data.address, html: data.html };
            markers.push(marker);
        });

$('#map_canvas').gMap({markers: markers ,address: jdata[0].address, zoom: 10 });