通过jQuery获取设置的数组值

时间:2014-08-02 22:17:31

标签: javascript jquery arrays spring spring-mvc

这可能是一个复杂的想法。

我正在使用Java和Spring,我正在尝试通过jQuery填充DOM中的预定义数组。

我有以下内容:

var clients = [];
<c:forEach var="client" items="${clients}">
    clients.push("${client.id} - ${client.name}"); 
</c:forEach>  

这个数组由控制器以这种方式填充:

            mv.addObject("clients", clients);

问题在于,在实际场景中,clientes数组仅被定义,并且其中没有任何值。有没有办法从“DOM”获取它(我不知道在这里说DOM是否正确)并用其他控制器方法的ajax调用获得的值填充它?

在返回的页面(或控制器响应 - 片段)中,数组如下所示:

        var clients = [];

        clients.push("0 - Cli1"); 

        clients.push("1 - Cli2"); 

        clients.push("2 - Cli3"); 

我实际上尝试执行以填充数组的方法必须是这样的:

$.ajax({
        url: "/prestamos/clients/loadClients?idCliente="+idCliente,
        type: "GET",
        cache:false,
        beforeSend: function(xhr) {  
            xhr.setRequestHeader("Accept", "application/json");  
            xhr.setRequestHeader("Content-Type", "application/json");  
        },
        success:function(response){
            //var content = response.find("#content");
            html = $.parseHTML(response);
            // here i should get the array from the $(html) returned object
            // and after that i should store the returned array as the new ${clients} object in my page
        },
        error:function(jqXhr, textStatus, errorThrown){
            //alert(textStatus);
        }
    });

感谢任何帮助。

1 个答案:

答案 0 :(得分:0)

最后我找到了解决方案。我将clients数组定义为window对象的附加属性。之后我以这种方式填充数组:

$.ajax({
        url: "/prestamos/clients/loadClients?idCliente="+idCliente,
        type: "GET",
        cache:false,
        beforeSend: function(xhr) {  
            xhr.setRequestHeader("Accept", "application/json");  
            xhr.setRequestHeader("Content-Type", "application/json");  
        },
        success:function(response){
            //var content = response.find("#content");
            html = $.parseHTML(response);
            script = $((html)[19]).text();          
            eval(script); 
        },
        error:function(jqXhr, textStatus, errorThrown){
            //alert(textStatus);
        }
    });

html 19里面有客户端的div:

<c:forEach items="${clients}" var="client">
    window.integrantes.push("${client.id} - ${client.nombre}");
</c:forEach>

解决方案适用于特定情况,但是解决方案的某些部分可能对任何解决方案都有用。