我遇到的问题是,我下面的自动完成代码可在chrome和firefox上运行,但不能在Internet Explorer 11上运行。任何人都可以帮助我解决我的代码。我认为它的$.ajax
问题不支持,但是任何人都可以通过下面的代码来帮助我。谢谢。
$("#searchTextField").autocomplete({
minLength: 2,
focus: function(event, ui) {
event.preventDefault();
},
source: myData,
select: function select(event, ui) {
event.preventDefault();
var url = '#{request.contextPath}/index.xhtml';
var searchValue = ui.item.value;
var data = new FormData();
data.append('searchValue', searchValue);
$.ajax({
url: url,
data: data,
method: "POST",
processData: false,
contentType: false,
cache: false,
}).done(text => {
$('#results').append($(text).find('#textTable'));
$('#results').append($(text).find('table'));
$('#results').append($(text).find('#bestTable'));
$("#clearone").show();
});
},
response: function response(event, ui,) {
if (!ui.content.length) {
var message = {
value: "",
label: "NOTHING FOUND"
};
ui.content.push(message);
}
}
});
答案 0 :(得分:2)
在IE中无法正常工作的原因有两个。首先,response
处理函数中有一个逗号结尾,需要将其删除:
response: function response(event, ui,) {
第二,您正在done()
中使用箭头功能; IE的任何版本都完全不支持这些功能。
$.ajax({ /* ... */ }).done(text => {
请改用传统的匿名函数。这是带有这些修复程序的完整示例:
$("#searchTextField").autocomplete({
minLength: 2,
focus: function(event, ui) {
event.preventDefault();
},
source: myData,
select: function select(event, ui) {
event.preventDefault();
var url = '#{request.contextPath}/index.xhtml';
var searchValue = ui.item.value;
var data = new FormData();
data.append('searchValue', searchValue);
$.ajax({
url: url,
data: data,
method: "POST",
processData: false,
contentType: false,
cache: false,
}).done(function(text) {
$('#results').append($(text).find('#textTable'));
$('#results').append($(text).find('table'));
$('#results').append($(text).find('#bestTable'));
$("#clearone").show();
});
},
response: function response(event, ui) {
if (!ui.content.length) {
var message = {
value: "",
label: "NOTHING FOUND"
};
ui.content.push(message);
}
}
});
最后,请注意,您可以通过使用开发人员工具(按F12在大多数浏览器中打开它们)并在控制台中查看错误来调试JS问题。