Я создал функцию поиска в каталоге и использую ajax-вызов для файла в папке проекта.Он работает в Chrome и Firefox, но только иногда работает в Internet Explorer.
Я получил его для работы в Internet Explorer, но для этого требуется, чтобы я скопировал и вставил код в новую папку и надеялся, что он работает,Это странное поведение, потому что я не изменяю ни одной вещи в коде, и это иногда будет работать.
Если я заставлю его работать в Internet Explorer и скопирую / вставлю «рабочие» файлы - это неt всегда работает снова.
Изначально я использовал ES6, который не поддерживается IE, но я исправил эти проблемы.Я думаю, что может быть что-то не так с вызовом .ajax?Но я не могу понять, что.
AJAX Call
function getADInfo(){
$.ajax({
url: "../../js/roster.json",
method: 'GET',
dataType: 'json',
cache: false,
success: function(data) {
console.log('success from getADInfo');
// employees.push(...data);
Array.prototype.push.apply(employees, data);
},
error: function(err) {
console.error(err);
}
});
}
Это должно выполнить поиск в файле JSON и отобразить совпадения
function findMatches(wordToMatch, employees) {
return employees.filter(function(person) {
var regex = new RegExp(wordToMatch, 'gi');
var nameString = person.Name.split(", ")[1] + " " + person.Name.split(", ")[0];
var displayFirstName = person.DisplayName.split(", ")[1];
return person.GivenName.match(regex) || person.Surname.match(regex) || nameString.match(regex) || displayFirstName.match(regex);
});
}
function displayMatches() {
$('.suggestions').show();
var matchArray = findMatches(this.value, employees);
// var html = matchArray.slice(0,10).map(person => {
// var regex = new RegExp(this.value, 'gi');
// var firstName = person.GivenName.replace(regex, `<span class="hl">${this.value}</span>`);
// var lastName = person.Surname.replace(regex, `<span class="hl">${this.value}</span>`);
// var extension;
// if (person.Phone_Ext1 !== null){
// extension = person.Phone_Ext1;
// } else {extension = "N/A"}
// return `
// <li class="search-item" data-id=${person.EmployeeID}>
// <span class="person">${firstName} ${lastName}</span>
// <span class="phone-ext">Ext. ${extension}</span>
// </li>
// `
// }).join('');
var html = [];
for(var i=0; i < matchArray.slice(0,10).length; i++){
var person = matchArray.slice(0,10)[i];
var regex = new RegExp(this.value, 'gi');
var hilight = '<span class="hl">' + this.value + '</span>';
var firstName = person.GivenName.replace(regex, hilight);
var lastName = person.Surname.replace(regex, hilight);
var extension;
var showdisplayname;
if (person.DisplayName.split(", ")[1] !== person.GivenName){
showdisplayname = "(" + person.DisplayName.split(", ")[1] + ")";
showdisplayname = showdisplayname.replace(regex, hilight);
} else {
showdisplayname = "";
}
if (person.Phone_Ext1 !== null){
extension = person.Phone_Ext1;
} else {
extension = "N/A"
}
var list =
'<li class="search-item" data-id=' + person.EmployeeID +'>' +
'<span class="person">' + firstName + ' ' + lastName + ' ' + showdisplayname + '</span>' +
'<span class="phone-ext">Ext. ' + extension + '</span>' +
'</li>';
html.push(list);
}
html = html.join('');
if ($('#search-box').val() == ""){
suggestions.innerHTML = "";
} else {
suggestions.innerHTML = html;
}
}
Раскрывающийся списокдолжен появиться при вводе, но в Internet Explorer ничего не происходит.Он отлично работает в других браузерах.Когда я проверяю консоль, я получаю статус 200, но это ошибка
Пример