【发布时间】:2021-07-15 13:01:39
【问题描述】:
我正在使用此函数将JQuery.autocomplete 应用于文本框小部件:
function GetData(dest_widget) {
dest_widget.autocomplete({
minLength: 3,
source: function (request, response) {
$.ajax({
type: "POST",
url: "/Service/WSDataService.asmx/GetData",
contentType: "application/json; charset=utf-8",
data: "{'filter':'" + request.term + "'}",
dataType: "json",
async: true,
success: function (data) {
var _data_array = data.d.split("<br />");
response(_data_array);
},
error: function (result) {
alert("GetData() error" + result);
}
})
}
});
}
除非我尝试在文本框中输入特殊字符(如'),否则它可以正常工作...在这种情况下,我收到此错误:
Object {消息:“传递的对象无效。预期':'o '}'...", StackTrace: " 在 System.Web.Script.Serialization.JavaScriptOb…”,异常类型: "System.ArgumentException"}
看起来我需要在调用 ajax 之前对小部件值进行编码。我尝试过:
data: "{'filter':'" + encodeURIComponent(request.term) + "'}",
还尝试更改contentType,但在这两种情况下都没有成功。
【问题讨论】:
-
试试FormData
-
你建议在哪里使用这样的调用?我的意思是...
encodedURIComponent()在我的示例中调用它根本没有被调用。错误似乎出现在source函数的参数通道中...顺便说一句我需要更改contentType?