2012-04-15 129 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