Select2 initSelection

我有一个问题是使用ajax调用设置方法initSelection,我返回“undefined”。 我检查了ajax调用返回正确的结果..我不知道如何设置回调方法以确保选择’预设值。

function mediaFormatResult(media) { var markup = "
" + media.name + ", " + media.prov + " (" + media.region + ")
"; return markup; } function mediaFormatSelection(media) { return media.name +", " + media.prov + " (" + media.region + ")"; } $field = $('#comune'); $($field).select2({ placeholder: "Seleziona il tuo comune", minimumInputLength: 3, initSelection: function(element, callback) { return $.ajax({ type: "POST", url: "myurl", dataType: 'json', data: { id: (element.val())}, success: function(data){ //results: data.results; } }).done(function(data) { //console.log(data); callback(data); }); }, ajax: { quietMillis: 100, url: "myurl", dataType: 'json', type: 'POST', data: function (term, page) { return { q: term, page_limit: 10 }; }, results: function (data, page) { return {results: data.results}; } }, formatResult: mediaFormatResult, formatSelection: mediaFormatSelection, formatNoMatches: function () { return "Nessun risultato trovato!";}, formatSearching: function () { return "Ricerco.."; }, formatInputTooShort: function(input, min) {return "Inserire "+ (min - input.length) + " caratteri.";}, dropdownCssClass: "bigdrop", });

有什么不对吗?

注意,您发送给回调函数的数据需要是一个具有idtext属性的对象。

这对我有用:

 initSelection: function(element, callback) { var id; id = $(element).val(); if (id !== "") { return $.ajax({ url: url, type: "POST", dataType: "json", data: { id: id } }).done(function(data) { var results; results = []; results.push({ id: data.id, text: data.name }); callback(results[0]); }); } } 

这里解决方法:

 initSelection: function(element, callback) { return $.ajax({ type: "POST", url: path, dataType: 'json', data: { id: (element.val())}, success: function(data){ } }) 

必须注意在控制器中创建数组,它应该是这样的:

 foreach ($entities as $member) { $json['id'] = $member->getId(); $json['name'] = $member->getComune(); $json['region'] = $member->getRegione()->getRegione(); $json['prov'] = $member->getProvincia()->getSigla(); } $result = $json; return json_encode($result);