Wicket Ajax可在Firefox和IE中使用,但不能在Chrome和Safari中使用

问题描述

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

// Reference to the Bosstext Object.
[Serializefield] private Text Bosstext;

// Deactivate TextBox.
Bosstext.enabled = false;

因此,此代码在Firefox和IE中均能正常工作,并且在Dev Tools中看到了请求。但是,当我使用Chrome和Safari代码无法正常工作时,甚至在开发工具中都没有ajax请求时,什么也不会发生,并且不会触发OnUpdate。在Chrome的开发工具中,我有错误

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

IE和Firefox控制台btw中没有这样的错误。此页面上也没有工具提示。那么,我如何才能在Chrome中使用它呢?也许Chrome有一些ajax问题?我正在使用Chrome 85.0.4183.102

解决方法

如果发生JavaScript错误,则错误后的所有内容都不会执行。

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

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

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