<?
”,Ajax调用就会失败,甚至不会在服务层中触发控制器方法。
但这对于所有输入值(例如“ <”,“?”,“ <*”等)都可以正常工作。这仅对于此输入“ <?
”是无效的。
在控制器维修方法中,如果我将输入参数值硬编码为“ <?
”,这将为我提供预期的结果。仅当我从JQuery ajax传递此值时,它才中断。
$.ajax({
url: '/Profile/ValidateAccountName',
type: 'GET',
dataType: 'json',
async: false,
data: {
accountName: $('#account-name').val()
},
cache: false,
success: function (result) {
if (!result) {
isValid = false;
errMsg = "Account name has invalid characters";
}
},
error: function (xhr, textStatus, errorThrown) {
console.error("Service call failed during ValidateAccountName() execution. ")
}
});
请让我知道我在这里想念什么。
答案 0 :(得分:1)
?是一个特殊字符,并且是用于启动新的URL参数的标记。您需要使用encodeURIComponent方法发送如下特殊字符,
$.ajax({
url: '/Profile/ValidateAccountName',
type: 'GET',
dataType: 'json',
async: false,
data: {
accountName: encodeURIComponent($('#account-name').val())
},
cache: false,
success: function (result) {
if (!result) {
isValid = false;
errMsg = "Account name has invalid characters";
}
},
error: function (xhr, textStatus, errorThrown) {
console.error("Service call failed during ValidateAccountName() execution. ")
}
});