这可能是一个复杂的想法。
我正在使用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);
}
});
感谢任何帮助。
答案 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>
解决方案适用于特定情况,但是解决方案的某些部分可能对任何解决方案都有用。