【问题标题】:Wicket Ajax works in Firefox and IE but not Chrome and SafariWicket Ajax 适用于 Firefox 和 IE,但不适用于 Chrome 和 Safari
【发布时间】:2021-01-07 05:16:18
【问题描述】:

我正在使用 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

【问题讨论】:

    标签: javascript ajax google-chrome wicket


    【解决方案1】:

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

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

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

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

    【讨论】:

    • 我试图在开发工具中调试 JS。当我添加一些断点并在开发工具控制台中通过它们时,ajax 调用工作。但是当我不调试它时,代码仍然不起作用。这怎么可能?
    • 问题出在 Bootstrap 中。我刚刚在我的网页末尾添加了来自 bootsrap 站点的 js 源代码,现在它可以工作了。非常感谢。
    最近更新 更多