首页 > 解决方案 > AJAX 参数中无法识别的转义序列错误

问题描述

我正在尝试使用 AJAX 填充 jQuery 数据表。我传递给 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];
    });
}

标签: jqueryasp.net-ajax

解决方案


修复方法是按照 Mohammad 的建议替换函数 populateTable(ws_url, parameters, table) 中的以下行:

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

推荐阅读