我创建了一个 Web 服务,它基本上是我的应用程序中一组操作的一组 json 值。这个想法是它将从 MongoDB 集合返回一组键/值。到目前为止,返回值有点像:
{"d":"[{\"label\":\"Add A Customer\",\"value\":\"\/EdCustomer\/\"},{\"label\":\"View Suppliers\",\"value\":\"\/Suppliers\/\"},{\"label\":\"Add A Customer\",\"value\":\"\/EdCustomer\/\"}]"}
我有以下 Javascript/JQuery 以使其与作为 JQuery UI 一部分的自动完成一起工作:
var commands;
var commandstest = [
{
value: "test1",
label: "test1"
},
{
value: "test2",
label: "test2"
}
];
$(document).ready(function () {
//The search button
$("#btnCmdSearch")
.button()
.click(function () {
alert("You searched for " + txtSearch.value);
});
$.ajax({
url: "http://localhost:50305/SearchCommands.svc/GetCommands",
dataFilter: function (data) {
var msg = eval('(' + data + ')');
if (msg.hasOwnProperty('d'))
return msg.d;
else
return msg;
},
success: function (data) {
commands = data;
}
});
//The search Box AutoComplete...
$("#txtSearch").autocomplete({
source:commands,
minLength: 2,
});
});
有趣的是,当我在自动完成方法的源代码中使用 commandstest 时,它按预期工作。如果我使用命令(json 数组),那么什么也不会发生。我查看了chrome,我得到了错误:
Uncaught TypeError: Property 'source' of object #<Object> is not a function
如果我将 var 命令的声明更改为:
var commands = new Array();
然后此错误消息不会出现,但自动完成仍然没有任何反应。我到底做错了什么?