ページの読み込み時に、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を使用しています。
どんな助けも大歓迎です。
ついに解決しました!私は理解した select2
は単一の値であるため配列を必要としなかったため、data.results配列の最初の要素を選択しました。
callback(data.results[0]);
Multiple:trueを設定した場合は、結果配列全体を受け入れます。
callback(data.results);
より少ないコードでこれを使用することもできます:
initSelection: function(element, callback) {
return $.getJSON("/jQueryScripts/jQuerySelectListArtists.php?id=" + element.val(), null, function(data) {
return callback(data[0]);
});
}
Select2 wikiでこの例を見てきましたが、コールバック(データ)対コールバック(データ[0])をあなたと同じように処理しなければなりませんでした。