我正在尝试使用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 = {
'&': '&',
'<': '<',
'>': '>',
'"': '"',
"'": ''',
'/': '/',
'`': '`',
'=': '='
};
function escapeHtml (string) {
return String(string).replace(/[&<>"'`=\/]/g, function (s) {
return entityMap[s];
});
}
答案 0 :(得分:0)
解决方法是按照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) {...}