0

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

4

0 回答 0