0

オートコンプリートを機能させようとしています。私はこの URL を持っています。JSON を読み取る必要があります。

http://openscan.addi.dk/2.0/?action=openScan&field=phrase.title&lower=hest&limit=10&outputType=json

結果を受け取ったら、それを jquery オートコンプリートにマップしようとします。次の jquery を使用します。

<script type="text/javascript">
        $(function () {
            function log(message) {
                $("<div/>").text(message).prependTo("#log");
                $("#log").scrollTop(0);
            }

            $("#search").autocomplete({
                source: function (request, response) {
                    $.ajax({
                        url: "http://openscan.addi.dk/2.0/?action=openScan&field=phrase.title&lower=hest&limit=10&outputType=json",
                        dataType: "jsonp",

                        success: function (data) {
                            response($.map(data.scanResponse.term, function (item) {
                                return {
                                    label: item.name+' ( '+item.hitCount+')',
                                    value: item.name
                                }
                            }));
                        }
                    });
                },
                minLength: 2,
                select: function (event, ui) {
                    log(ui.item ?
                    "Selected: " + ui.item.label :
                    "Nothing selected, input was " + this.value);
                },
                open: function () {
                    $(this).removeClass("ui-corner-all").addClass("ui-corner-top");
                },
                close: function () {
                    $(this).removeClass("ui-corner-top").addClass("ui-corner-all");
                }
            });
        });
    </script>
    <h2>
        Demo of autocomplete using OpenScan
    </h2>
    Start typing below.<br />
    <input id="search" />

私の問題は、結果が以前に見た限られた量の JSON とは異なり、プロパティに $ と @ が含まれていることです。それらにインデックスを付けるにはどうすればよいですか?

編集 data.scanResponse を data.scanResponse.term に変更

4

1 に答える 1

2

表示したい正確な値はわかりませんが、次のように配列構文を使用してプロパティにアクセスできます。

label: item.name["@"]+' ( '+item.hitCount["$"]+')'
于 2012-06-23T20:30:14.127 に答える