Мой код / ​​JavaScript иногда работает в Internet Explorer, а иногда нет.Работает во всех других браузерах - PullRequest
0 голосов
/ 28 марта 2019

Я создал функцию поиска в каталоге и использую 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, но это ошибка

Пример

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...