29

ページの読み込み時に、 initSelection を使用して ID 60 (入力フィールドの指定値)を選択しようとしています。私はそれを適切に機能させることができないようです。

PHP スクリプトはうまく機能し、正しい値を返しますが、JS にコールバックを正しく実行させるにはどうすればよいでしょうか?

JavaScript:

$(document).ready(function() {
    $('#editAlbumArtistId').select2({
            placeholder: 'Search names',
            ajax: {
                url: "/jQueryScripts/jQuerySelectListArtists.php",
                dataType: 'json',
                quietMillis: 100,
                data: function (term, page) {
                    return {
                        term: term, //search term
                        page_limit: 10 // page size
                    };
                },
                results: function (data, page) {
                    return {results: data.results};
                }

            },
            initSelection: function(element, callback) {

            var id = $(element).val();
            if(id !== "") {
                $.ajax("/jQueryScripts/jQuerySelectListArtists.php", {
                    data: {id: id},
                    dataType: "json"
                }).done(function(data) {
                    callback(data);
                });
            }
        }
    });
});

HTML:

<p>
    <input type='hidden' value="60" data-init-text='Search names' name='editAlbumArtistId' id='editAlbumArtistId' style="width:180px;"/>
</p>

ページを更新するたびに、PHP スクリプトが実行され、適切な ID とテキストが返されることがわかります。ただし、フィールドは更新されず、考えられることはすべて真剣に試しました。

Select2 3.4.3 を使用しています。

どんな助けでも大歓迎です。

4

2 に答える 2

46

ついに解決!select2単一の値であるため、配列は必要ないと考えたため、data.results 配列の最初の要素を選択しました。

callback(data.results[0]);

また、multiple:true を設定した場合は、結果配列全体を受け入れます。

callback(data.results);
于 2013-09-20T06:03:25.717 に答える