2012-04-15 130 views
0

我已经创建了一个基本上是我的应用程序中的一组操作值的json集合的Web服务。这个想法是它将从MongoDB Collection返回一组键/值。到目前为止,返回值是有点像:JSON自动完成ASP.NET Jquery UI

{"d":"[{\"label\":\"Add A Customer\",\"value\":\"\/EdCustomer\/\"},{\"label\":\"View Suppliers\",\"value\":\"\/Suppliers\/\"},{\"label\":\"Add A Customer\",\"value\":\"\/EdCustomer\/\"}]"} 

我有以下的Javascript/jQuery来使这项工作与是JQuery用户界面的一部分自动完成:

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(); 

然后此错误消息没有出现,但仍然没有与自动完成情况。我究竟做错了什么?

回答

1

我觉得源需要一个回调函数返回的响应

$("#txtSearch").autocomplete({ 
    source: function(request, response){ response(commands); }, 
    minLength: 2, 
}); 

回应,如果纹身不工作,然后我要去把它仔细看看。

+0

你是一个真正的人。非常感谢。 – 2012-04-15 17:26:21