JQuery自动完成调用中的撇号
本文关键字:调用 JQuery | 更新日期: 2023-09-27 18:12:33
当搜索任何不包含撇号的名称时,下面的代码可以工作。当您试图查找名字中带有撇号的人时,它会失败(返回错误)。我怎样才能找到带撇号的人?
function autoComplete() {
$(document).ready(function () {
$(".AutoCompleteClass").autocomplete({
source: function (request, response) {
$.ajax({
url: "/Service/NomineeWebService.asmx/GetMatchingActiveDirectoryUsers",
data: "{ 'SearchCharacters': '" + request.term + "' }",
dataType: "json",
type: "POST",
contentType: "application/json; charset=utf-8",
dataFilter: function (data) { return data; },
success: function (data) {
response($.map(data.d, function (item) {
return {
id: item.NomineeUserName,
value: item.NomineeLastNameFirstName + " - " + item.NomineeDomainAndUserName,
data: item
}
}))
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
alert(textStatus);
}
});
},
delay: 150,
minLength: 3,
select: function (event, ui) {
$('.SelectedUserNameWrapper input[type=hidden]').val(ui.item.id);
}
});
});
$('#AutoCompleteTextBox').keypress(function (event) {
if (event.which == '13') {
alert('test');
$('#AutoCompleteButton').click();
}
我找到了解决这个问题的方法,我们应该用转义字符替换所有的"'"。代码如下
function autoComplete() {
$(document).ready(function () {
$(".AutoCompleteClass").autocomplete({
source: function (request, response) {
request.term = request.term.replace(/'/gi,"'''"); // replace globally
听起来,(输入中的)单引号在用于查询数据库之前可能需要进行转义。尝试将AJAX调用的"数据"部分替换为以下内容:
data: "{ 'SearchCharacters': '" + request.term.replace("'", "''") + "' }",
我的jQuery语法可能有点差,但希望它能传达我想说的。
如果这样做,您可能会遇到这个问题与其他特殊字符的道路。
注意:一个额外的单引号是mySQL和SQL Server中单引号的"转义字符"。您没有提到您正在使用的RDBMS,因此对您来说可能会有所不同。
必选:您可能知道这一点,但希望您没有连接那个"请求"。在服务器端使用SQL查询查询"term"值。这将使您容易受到SQL注入=)
有点古怪,但我最终做了这样的替换:替换("、"%"27日)
然后在我的web服务上,我拦截并替换回使用撇号:SearchCharacters =搜索字符。替换("% 27"、"’");然后把它传递给数据库调用。
这工作。它是自动完成插件或jquery之类的东西。既然它可以工作,我将使用它并继续。
谢谢你的建议。顺便说一下,没有一个逃避对我有用…
再次感谢…