【发布时间】:2013-09-25 02:18:01
【问题描述】:
在页面加载时,我正在尝试使用 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。
任何帮助将不胜感激。
【问题讨论】:
-
您是否尝试过检查开发人员工具中发生的情况?查看您的 ajax 调用是否返回 200,并且 json 中有一个
results的键。 -
您应该使用 ajax 设置(成功、错误、完成)。 api.jquery.com/jQuery.ajax/#jQuery-ajax-settings
-
你为什么把jsonp作为数据类型?
-
感谢到目前为止的 cmets!我已将数据类型从 jsonp 更改为 json(不知道有什么区别,抱歉)。我现在在加载时得到“未定义”。我试过使用 ajax 成功,结果相同。 @Wil ajax 返回 200。ajax 确实在返回结果。
标签: jquery jquery-select2