Wicket Ajax 适用于 Firefox 和 IE,但不适用于 Chrome 和 Safari
Wicket Ajax works in Firefox and IE but not Chrome and 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 中运行良好,我在 Dev Tools 中看到了请求。但是当我使用 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 中工作?也许有一些 ajax 问题与 Chrome 有关?我正在使用 Chrome 85.0.4183.102
如果出现 JavaScript 错误,则不会执行错误之后的所有内容。
$('#someElement').tooltip(); // 1
$('#anotherElement').on('change', function() {...}); // 2
如果 (1) 处出现错误,则 (2) 根本不会执行,因此更改 #anotherElement
的值不会触发事件侦听器。 IE。 Wicket 不会知道该值已更改,也不会向服务器发出 Ajax 调用以通知它。
如您所说,tooltip()
抛出错误,因为 (Bootstrap ?!) 库未添加到当前页面。临时添加它以查看这是否解决了下拉元素(和 Ajax)的问题。执行此操作后,您可以在 tooltip()
中放置一个断点并调查它被调用的原因。
我使用的是 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 中运行良好,我在 Dev Tools 中看到了请求。但是当我使用 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 中工作?也许有一些 ajax 问题与 Chrome 有关?我正在使用 Chrome 85.0.4183.102
如果出现 JavaScript 错误,则不会执行错误之后的所有内容。
$('#someElement').tooltip(); // 1
$('#anotherElement').on('change', function() {...}); // 2
如果 (1) 处出现错误,则 (2) 根本不会执行,因此更改 #anotherElement
的值不会触发事件侦听器。 IE。 Wicket 不会知道该值已更改,也不会向服务器发出 Ajax 调用以通知它。
如您所说,tooltip()
抛出错误,因为 (Bootstrap ?!) 库未添加到当前页面。临时添加它以查看这是否解决了下拉元素(和 Ajax)的问题。执行此操作后,您可以在 tooltip()
中放置一个断点并调查它被调用的原因。