AJAX 参数中无法识别的转义序列错误

Unrecognized escape sequence error in AJAX parmeter

我正在尝试使用 AJAX 填充 jQuery 数据 table。我传递给 Web 服务的参数是一个文件路径,我不断收到无法识别的转义序列错误。我试图转义一些字符无济于事:

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];
    });
}

解决方法是替换函数 populateTable(ws_url, parameters, table) 中的以下行,也遵循 Mohammad 的建议:

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) {...}