javascript - 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
解决方案
如果存在 JavaScript 错误,则错误之后的所有内容都不会执行。
$('#someElement').tooltip(); // 1
$('#anotherElement').on('change', function() {...}); // 2
如果 (1) 处有错误,则 (2) 根本不会执行,因此更改 的值#anotherElement
不会触发事件侦听器。即 Wicket 不会知道该值已更改,并且不会向服务器发出 Ajax 调用以通知它。
正如您所说tooltip()
,由于 (Bootstrap ?!) 库未添加到当前页面,因此引发错误。暂时添加它以查看这是否解决了下拉元素(和 Ajax)的问题。完成此操作后,您可以在其中设置断点tooltip()
并调查为什么要调用它。
推荐阅读
- excel - 在 Excel 的散点图中添加 ± 10 % 的线
- javascript - 类不会在滚动时切换
- python-3.x - 在大熊猫的帮助下,在 matplotlib 或 seaborn 中绘制折线图并突出显示最小点
- c# - 在 winform 中持续使用 API (C#)
- docker - 由未知权威签署的 Docker 证书
- javascript - 缩短长度字符串忽略非空格字符,如阿拉伯语变音符号字符而不切割单词
- python - 在 NumPy 中向量化矩阵乘法
- azure - Azure 虚拟机 ARM 模板 CopyIndex 排除 avSet
- laravel-authentication - Laravel lighthouse 4.16 在不使用已弃用的@middleware 的情况下获取当前用户
- r - 计算每个值的行数并将它们绘制在 R 中