我必须创建一个显示 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 方面的专家,所以如果不是浏览器问题,我想了解在这种情况下会发生什么。