0

基本的に、アプリ内の一連のアクションの値の json セットである Web サービスを作成しました。アイデアは、MongoDB コレクションから一連のキー/値を返すというものです。これまでのところ、戻り値は次のようになります。

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

JQuery UIの一部であるオートコンプリートでこれを機能させるために、次のJavascript / 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 配列) を使用すると、何も起こりません。クロムを調べたところ、エラーが発生しました:

    Uncaught TypeError: Property 'source' of object #<Object> is not a function

var コマンドの宣言を次のように変更すると:

   var commands = new Array();

その後、このエラー メッセージは表示されませんが、オートコンプリートでは何も起こりません。私は一体何を間違っているのですか?

4

1 に答える 1

1

source は、応答を返すコールバック関数である必要があると思います

すなわち

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

タットが機能しない場合は返信してください。詳しく調べてみます。

于 2012-04-15T17:16:55.607 に答える