我必须创建一个显示2个表的简单jsp页面。已经有一个生成表的jsp页面,所以我所要做的就是用不同的参数调用页面并将结果加载到不同的div中。
我尝试的第一件事就是调用2个JQuery加载:
$(function() {
$("#res_05").load("tableGenerator.jsp",
{
"RESOURCE_NAME": "<%= resName1 %>",
},
function(responseText, textStatus, XMLHttpRequest) {
var firstTable = $("#res_05 table table").first();
$("#res_05").html(firstTable);
$("<h1> Resource <%= resName1 %> </h1>").insertBefore("#res_05 table");
});
$("#res_15").load("tableGenerator.jsp",
{
"RESOURCE_NAME":"<%= resName2 %>",
},
function(responseText, textStatus, XMLHttpRequest) {
var secondTable = $("#res_15 table table").first();
$("#res_15").html(secondTable);
$("<h1> Resource <%= resName2 %> </h1>").insertBefore("#res_15 table");
});
});
这个简单的页面适用于Firefox甚至Internet Eplorer 8,但在Chrome中它的行为方式很奇怪:它只显示第一个表格。
在第一次尝试之后,我在添加更多复杂性之前将负载集中在一个函数中。 所以脚本变成这样:
$(function() {
loadTable("res_05", "<%= resName1 %>");
loadTable("res_15", "<%= resName2 %>");
});
function loadTable(divName, resName) {
$("#" + divName).load("tableGenerator.jsp",
{
"RESOURCE_NAME": resName,
},
function(responseText, textStatus, XMLHttpRequest) {
var firstTable = $("#" + divName + " table table").first();
$("#" + divName).html(firstTable);
$("<h1> Resource " + resName + "</h1>").insertBefore("#" + divName + " table");
});
}
此更改后,该页面适用于所有浏览器,即使使用Chrome。
似乎这可能是由Chrome的错误javascript解释造成的,但使用JQuery这应该是一种罕见的情况。 毕竟它甚至可以在IE 8中运行,但我没想到Chrome会出现这样的行为。
我不是JQuery的专家,所以如果它不是浏览器问题,我想了解在这种情况下会发生什么。