Нераспознанная ошибка escape-последовательности в AJAX-параметре - PullRequest
0 голосов
/ 24 мая 2019

Я пытаюсь заполнить таблицу данных jQuery с помощью AJAX. Параметр, который я передаю в веб-сервис, является путем к файлу, и я продолжаю получать нераспознанную ошибку escape-последовательности. Я пытался убежать от некоторых персонажей безрезультатно:

Unrecognized escape sequence. (15): { \\u0027Path\\u0027: \\u0027C:\\\\TEMP\\\\DEV\\\\IDC\\\\2391\\\\GBS_IDC_WS_20190508.log\\u0027}\

Это обработчик нажатия кнопки «Отправить»:

$(document).on('click', '#btnSubmit', function (ev) {
    var wsUrl = "services/lv.asmx/ProcessLogFile";
    var wsParams = "{ 'Path': '" + escapeHtml(logPath) + "'}";
    // var wsParams = '{ "Path": "' + logPath + '"}';
    populateTable(wsUrl, wsParams, tblContacts);
    return false;
});

function populateTable(ws_url, parameters, table) {
    debugger
    $.ajax({
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        url: ws_url,
        cache: false,
        data: parameters,
    }).done(function (result) {
        table.clear().draw();
        if (!result || result.d === "") {
        }
        else {
            jResult = JSON.parse(result.d);
            table.rows.add(jResult).draw();
        }
    }).fail(function (jqXHR, textStatus, errorThrown) {
        alert(textStatus + ' - ' + errorThrown + '\n' + jqXHR.responseText);
    });
}

Это скрипт, который я нашел в Интернете, чтобы избежать некоторых символов:

var entityMap = {
    '&': '&',
    '<': '&lt;',
    '>': '&gt;',
    '"': '&quot;',
    "'": '&#39;',
    '/': '&#x2F;',
    '`': '&#x60;',
    '=': '&#x3D;'
};

function escapeHtml (string) {
    return String(string).replace(/[&<>"'`=\/]/g, function (s) {
    return entityMap[s];
    });
}

1 Ответ

0 голосов
/ 28 мая 2019

Исправлено было заменить следующую строку в функции populateTable (ws_url, параметры, таблица), следуя также предложению Мухаммеда:

data: parameters,

на:

data: JSON.stringify(parameters),

Итак,обновленные (частичные) методы:

$(document).on('click', '#btnSubmit', function (ev) {
    var wsUrl = "services/lv.asmx/ProcessLogFile";
    var wsParams = { Path: escapeHtml(logPath) };
    populateTable(wsUrl, wsParams, tblContacts);
    return false;
});

function populateTable(ws_url, parameters, table) {
    $.ajax({
        type: "POST",
        dataType: "json",
        contentType: "application/json; charset=utf-8",
        url: ws_url,
        cache: false,
        data: JSON.stringify(parameters),
    }).done(function (result) {...}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...