3

这是我的代码:

<script>

    function loadPage() {

        function sendFormHelper(callback) {
            var url = "/same-as-current-url";
            var serializedForm = $('#form').serialize();
            $.post(url, serializedForm, function(data) {
                callback(data);
            });
        }

        $('#form').off('submit').on('submit', function() {
            sendForm(function(data) {
                var mainResultCount = $(data).find('#main-result-count');
                var mainList = $(data).find('#main-list');
                $('#main-result-count').html($(mainResultCount).html());
                $('#main-list').html($(mainList).html());
                loadPage();
            });
            return false;
        });

    }

    $(function() {
        loadPage();
    });

</script>

<form id="form">
    <!-- some stuff -->
</form>

<div id="main-result-count">
    <!-- some stuff that can change -->
</div>

<div id="main-list">
    <!-- some stuff that can change -->
</div>

如您所见,我不是在提交表单时重新加载页面,而是捕获事件并使用 AJAX 发送它。返回的数据是一个完整的 HTML 页面,与用户看到的几乎完全相同。从该页面,我使用可能更改的数据更新当前布局。

我在页面上还有其他几个 JS 脚本,运行时间很长,还有很多布局数据,如图像、CSS、菜单等。在获得 AJAX 的响应时,所有这些数据和 DOM 也会被加载请求即使该内容未显示,还是仅在浏览器解析时才加载此类内容,然后保留一种大字符串

我找不到我应该实施什么样的测试来自己找到答案:(

4

1 回答 1

3

不,当你这样做时,其他东西不会被加载。ajax 请求只会获取标记本身。它也不会引入外部脚本、运行脚本等。只有加载 HTML 会话的浏览器才会这样做。

您可以使用 Firebug 之类的工具进行调查,以验证我在这里是否正确。

在您提出请求时,继续观看 Firebug 的网络 I/O。您会注意到没有加载任何 javascript/css 资源……只是来自 servlet 的标记。

希望这可以帮助。

于 2012-06-14T15:46:15.537 回答