jQuery UI Autocomplete请求错误URL问题排查求助
以下是可能导致该问题的几个核心原因:
多自动补全插件冲突:你提到同一页面存在使用
paramName、serviceUrl的Autocomplete组件,这类参数属于devbridge jQuery Autocomplete(非jQuery UI官方插件)的配置项。如果该页面同时加载了jQuery UI Autocomplete和devbridge插件,后者会覆盖jQuery UI的autocomplete()方法,导致你的配置失效——devbridge插件默认会用?query=xxx发起请求,完全不识别jQuery UI的source、select参数。脚本执行顺序错误:即便两个插件都被引入,若你的jQuery UI Autocomplete初始化代码晚于devbridge插件的加载/初始化代码,
$().autocomplete会被devbridge的方法覆盖,你的配置自然无法生效,插件会按自身默认逻辑发起请求。元素被重复初始化:另一个页面中,
.postcode-lookup元素可能被其他脚本(比如那两个用paramName的组件的初始化代码)再次调用autocomplete()方法。由于此时autocomplete已经是devbridge插件的方法,会直接覆盖你之前基于jQuery UI的配置,导致请求格式改变。全局配置被篡改:虽然概率较低,但如果页面中有代码修改了jQuery UI Autocomplete的全局默认配置(比如修改
$.ui.autocomplete.prototype.options.source),也可能导致你的自定义source函数失效,但结合你提到的请求参数变成query,这个可能性远低于插件冲突。
内容的提问来源于stack exchange,提问作者Josh Dredge

