首页 > 解决方案 > Wicket Ajax 适用于 Firefox 和 IE,但不适用于 Chrome 和 Safari

问题描述

我正在使用 Wicket 7.6,我有一些这样的代码

yearGroupDdl.addToComponent(new AjaxXSRFFormComponentUpdatingBehavior("change", token) {
            @Override
            protected void onUpdate(AjaxRequestTarget target) {
                selectedYearGroup = yearGroupDdl.getComponent().getModelObject();
                filter.setYearGroup(selectedYearGroup);
                target.add(content);
            }
        });

所以这段代码在 Firefox 和 IE 中运行良好,我在开发工具中看到了请求。但是,当我使用 Chrome 和 Safari 代码不起作用并且开发工具中甚至没有 ajax 请求时,什么也没有发生并且 OnUpdate 不会触发。在 Chrome 的开发工具中我有错误

Uncaught TypeError: $(...).tooltip is not a function
    at HTMLDocument.<anonymous> (survey_view;jsessionid=FBCB6EED4CCEB02479F1B60D16E3539C?1&entityId=ac4c2a81-9887-4324-a8cf-e463c781475f:48)
    at i (jquery-1.12.4-ver-8195A8C8C12FE76B1AF13FF30D4EC630.js:2)
    at Object.fireWith [as resolveWith] (jquery-1.12.4-ver-8195A8C8C12FE76B1AF13FF30D4EC630.js:2)
    at Function.ready (jquery-1.12.4-ver-8195A8C8C12FE76B1AF13FF30D4EC630.js:2)
    at HTMLDocument.K (jquery-1.12.4-ver-8195A8C8C12FE76B1AF13FF30D4EC630.js:2)

顺便说一句,IE 和 Firefox 控制台中没有这样的错误。此页面上也没有工具提示。那么,我怎样才能让它在 Chrome 中工作呢?也许有一些与 Chrome 相关的 ajax 问题?我正在使用 Chrome 85.0.4183.102

标签: javascriptajaxgoogle-chromewicket

解决方案


如果存在 JavaScript 错误,则错误之后的所有内容都不会执行。

$('#someElement').tooltip();                            // 1
$('#anotherElement').on('change', function() {...});    // 2

如果 (1) 处有错误,则 (2) 根本不会执行,因此更改 的值#anotherElement不会触发事件侦听器。即 Wicket 不会知道该值已更改,并且不会向服务器发出 Ajax 调用以通知它。

正如您所说tooltip(),由于 (Bootstrap ?!) 库未添加到当前页面,因此引发错误。暂时添加它以查看这是否解决了下拉元素(和 Ajax)的问题。完成此操作后,您可以在其中设置断点tooltip()并调查为什么要调用它。


推荐阅读