3

jquery ui オートコンプリートを使用しています。オートコンプリート ソースは ajax リクエストから来ています。次に、ユーザーがオプションをクリックすると、そのオプションに関連するデータをサーバーから取得するために別の ajax 要求を作成しました。

Erveything は正常に動作しますが、2 番目の ajax リクエストの後、オートコンプリート ボックスに何かを入力すると、2 番目のリクエストで取得したデータが表示されます。

2 番目のリクエストのデータは、最初のリクエストのデータをオーバーライドしています...

2 番目のリクエストの結果がプレースホルダーに表示されます。ただし、その後、オートコンプリートに再度入力すると、成功リクエストに含まれるデータがソースとして取得されます。最後のデータがオートコンプリート ソースとして使用されています!

この問題を解決するのを手伝ってくれませんか?

これが私のコードです:

$("#sinput").autocomplete({
     source: function (request, response) {
                $.ajax({
                    type: 'GET',
                    url: 'Handlers/AutoCompleteHandler.ashx?type=html',
                    dataType: "json",
                    cache: false,
                    data: { term: request.term },
                    success: function (data) {

                        response($.map(data, function (item) {
                            return {
                                label: item.label,
                                id: item.value,
                            };
                        }));
                    },
                });
            },
            minLength: 3,
            select: function (event, ui) {
                var content_id = ui.item.id;
                $.ajax({
                    type: 'GET',
                    url: 'Handlers/GetContentHandler.ashx?id=' + content_id + '&type=html',
                    dataType: 'json',
                    cache: false,
                    success: function (data) {
                        $('#placeholder').html(data[0].label)
                    }
                });
            }
        });
4

1 に答える 1