我有一个问题,用ajax调用设置方法initSelection,我返回“undefined”。 我检查了,ajax调用返回正确的结果.. 我不知道如何设置回调方法以确保选择“预设值。
的方法 function mediaFormatResult(media) {
var markup = "<div class='media-title'>" + media.name + ", " + media.prov + " (" + media.region + ")</div>";
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",
});
有什么问题?
答案 0 :(得分:12)
请注意,您发送给回调函数的数据需要是一个对象,具有 id 和 text 属性。
这对我有用:
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]);
});
}
}
答案 1 :(得分:3)
这里有解决方法:
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);