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 = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'/': '/',
'`': '`',
'=': '='
};
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) {...}
我正在尝试使用 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 = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'/': '/',
'`': '`',
'=': '='
};
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) {...}