【发布时间】:2011-12-15 21:29:24
【问题描述】:
以下代码在搜索任何不包含撇号的名称时有效。当您尝试查找姓名中带有撇号的人时,它会失败(返回错误)。我怎样才能找到带撇号的人?
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();
}
【问题讨论】:
-
什么是错误,ajax调用的输出是什么,是javascript中的错误还是服务器端的错误?
-
警告框即将出现,但只是说“错误”。它不返回消息。它正在查询的数据库名称中带有撇号,所以我不怀疑服务器端发生了什么。
-
听起来单引号(在您的输入中)可能需要在用于查询数据库之前进行转义。
-
这不起作用:数据:"{ 'SearchCharacters': '" + request.term.replace("'", "\'") + "' }",
-
什么数据库系统?通常(我认为)要转义单引号,您想使用另一个单引号('')。如果不这样做,我会删除我的答案 - 我只知道我以前遇到过。
标签: c# asp.net jquery-ui autocomplete jquery-ui-autocomplete