0

晚安。

就个人而言,我有一个模拟“地图”的功能,我在哪里添加为“键”菜单项和“值”菜单子项。

这个功能可以在下面查看

var key;
var value;
var mapaDeListas = new Array();
$(".conteudoMenu a").click(function(){
   key = $(this).parent(".conteudoMenu").parent("li").find(".itemMenu").attr("id");
   value = $(this).attr("id"); 
   Processar();
   console.log(mapaDeListas);
});

var Processar = function() {
    if (mapaDeListas[key] && $.inArray(value, mapaDeListas[key]) == -1 || mapaDeListas[key] && $.inArray(value, mapaDeListas[key]) != -1) {
        // Checks if the key already exists from the "key" and if the value of "value" is present in the array
       if (mapaDeListas[key].indexOf(value) == -1){
            mapaDeListas[key].push(value);
        }
    }
    else {
        // Creates the array according to the value of the "key" and adds the value of "value"
        mapaDeListas[key] = new Array();
        mapaDeListas[key].push(value);
    }
}

我想知道的是如何在 Ajax 中将这个函数的值传递给一个 Servlet,并通过它们在 java 中组装一个 Map。

我尝试如下通过 Ajax 发送此函数的值,但无济于事

function loadQuery(){
    if(inputMenu.length > 0){
    $.ajax({
        url: "assembles-query",
        type: "POST",
        data: {
            "mapaDeListas[]" : mapaDeListas
        },
        //dataType: "json",
        error:function(){
            alert("ERRO MENU")
        },
        success:function(responseText){
            $("textarea[id=assembleQuery]").text(responseText);
        }
    });
    }
}

在Servlet中,尝试得到如下结果String[] mapaDeListas = request.getParameterValues("mapaDeListas[]");

但是,当我发送 print 时,结果总是返回null

有人可以告诉我我错在哪里,我应该怎么做才能正确传递这些值?既然已经感谢大家的帮助。

下面打印了如何存储结果。 http://bit.ly/V9oHsg

4

1 回答 1

0

我假设这是使用 jQuery 1.4 - 然后使用traditional: true参数$.ajax()

或全局设置:(来自$.param()文档

从 jQuery 1.4 开始,该$.param()方法递归地序列化深层对象以适应现代脚本语言和框架,例如 PHP 和 Ruby on Rails。您可以通过设置全局禁用此功能jQuery.ajaxSettings.traditional = true;

于 2013-02-11T07:50:31.370 回答