2011-12-19 16 views
1

jQuery UI返されたJSONが配列の場合、オートコンプリート(下のコード)はうまく動作します。しかし、返されたJSONは配列を含むオブジェクトです。だから、Rows[]の代わりにObject.Rows[]jQuery UIカスタムJSONオブジェクトでオートコンプリート

私は以下の構文を得ることはできません。私はアイテムがちょうどitem.Rowsに切り替わったと思っていただろうが、それはうまくいかないようだ。オートコンプリートウィジェットはArrayresponse機能に供給されることを想定してい

$('#reportingLocationLookup').autocomplete({ 
    minLength: 3, 
    delay: 1000, //milliseconds, 
    source: function (request, response) { 
     var dto = { 'term': request.term, 'take': 10 }; 
     //Ajax 
     var urlMethod = window.siteRoot + "Invoices/ListPostalLocations"; 
     var jsonData = JSON.stringify(dto); 
     window.SendAjax(urlMethod, jsonData, response); 
    }, 
    focus: function() { 
     return false; 
    }, 
    select: function (event, ui) { 
     return false; 
    } 
}).data("autocomplete")._renderItem = function (ul, item) { 
    return $("<li></li>") 
    .data("item.autocomplete", item) 
    .append("<a>" + item.PostalCode + " - " + item.CityAlias + ", " + item.StateAbbreviation + "</a>").appendTo(ul); 
}; 
+0

あなたのコードを正しくフォーマットしなかったと思います。何かが欠落しています。 –

+0

すべてのコードがあります。私は他の場所でこのコードを使用し、項目がルートの配列である場合はうまく動作します。しかし、配列がルートから外れている場合、それはそれを好きではありません。 – Mark

+0

私はSendAjaxメソッドを表示しませんでしたが、正常に動作します。 – Mark

答えて

4

助けます。あなたの応答オブジェクトの配列response(オートコンプリートの供給コールバック関数を)送って、基本的には

/* snip */ 
source: function (request, response) { 
    var dto = { 'term': request.term, 'take': 10 }; 
    //Ajax 
    var urlMethod = window.siteRoot + "Invoices/ListPostalLocations"; 
    var jsonData = JSON.stringify(dto); 
    window.SendAjax(urlMethod, jsonData, function(data) { 
     response(data.Rows); 
    }); 
}, 
/* snip */ 

:これが意味することは、あなたのSendAjaxコールのsuccess引数を微調整する必要があるとしているということです。

関連する問題