0

フォームにオートコンプリート入力をしようとしていますが、データを表示するのに問題があります。これについてはたくさんの投稿がありますが、それを行うためのさまざまな方法のようにも思えます。jqueryサイトの例に従おうとしていますが、返されるデータが正しくないだけだと思いますか?私のページは次のようになります:

<html>
<head>
<link rel="stylesheet" href="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/themes/base/jquery-ui.css" type="text/css" media="all" />
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jquery/1.7.1/jquery.min.js"></script>
<script type="text/javascript" src="https://ajax.googleapis.com/ajax/libs/jqueryui/1.8.16/jquery-ui.js"></script>

<script type="text/javascript">                                         
$(document).ready(function() {
    $( "#Codes" ).autocomplete({
        source: function( request, response ) {
            $.ajax({                   
                   url: "/jreqlib",
                   dataType: "json",
                   data: {
                       featureClass: "P",
                       style: "full",
                       maxRows: 25,
                    },
                    success: function( data ) {
                        response( $.map( data, function( item ) {
                            return {
                                label: item.name,
                                value: item.name
                            }
                        }));
                    }
                });
        },
        minLength: 1,
        open: function() {
        $( this ).removeClass( "ui-corner-all" ).addClass( "ui-corner-top" );
        },
        close: function() {
            $( this ).removeClass( "ui-corner-top" ).addClass( "ui-corner-all" );
        }
   });
});
    </script>
</head>
<body>
<form>
    <input id="Codes">
</form>
</body>
</html>

サーバーから返されるものは次のようになります。

[{"1234":"1234"},{"134":"134},{"567":"567"}]

ボックスをクリックすると、「1234」と「567」が表示され、1と入力すると「1234」と「134」が表示され、12と入力すると「1234」だけが表示されます。 ect。

どんな助けでもTIAに感謝します

4

1 に答える 1

0

私の提案は、サーバーが検索文字列に応じて動的にjsonを生成できるようにすることです。以下に挿入しname_startsWith: request.termますmaxRows: 25,name_startsWithサーバーはget-variableで検索文字列を見つけることができるようになりました。検索文字列 '1' の場合、サーバーは["1234","134"].

さらに、削除

featureClass: "P",
style: "full",
maxRows: 25,

そして交換

response( $.map( data, function( item ) {
    return {
        label: item.name,
        value: item.name
    }
}));

response(data); 
于 2013-03-09T00:18:18.780 に答える