我正在使用Summernote编辑器(@username)。 (https://summernote.org/examples/#hint-for-mention) 我正在寻找一种方法将用户名数组加载到Summernote中。 我尝试过的事情:(在jQuery promises with summernote hints的帮助下)
$(document).ready(function()
{
$('.editor').summernote({
height: 300,
hint: {
match: /\B@(\w*)$/,
users: function(keyword, callback) {
$.ajax({
url: '{path}/get_users/' + keyword,
type: 'get',
async: true
}).done(callback);
},
search: function (keyword, callback) {
this.users(keyword, callback);
},
content: function (item) {
return '@' + item;
}
});
});
});
返回用户名数组的PHP:
public function get_users($keyword='')
{
$ar = array('jayden', 'sam', 'alvin', 'david');
echo json_encode($ar); // returns ['jayden', 'sam', 'alvin', 'david']
}
结果:
Uncaught TypeError: items.map is not a function
at HintPopover.createItemTemplates (summernote.js:7625)
at Object.<anonymous> (summernote.js:7672)
at i (jquery-3.2.1.min.js:2)
at Object.fireWith [as resolveWith] (jquery-3.2.1.min.js:2)
at A (jquery-3.2.1.min.js:4)
at XMLHttpRequest.<anonymous> (jquery-3.2.1.min.js:4)
看起来这个.users不被认为是一个数组...... 谢谢你的建议...
答案 0 :(得分:0)
您需要在您的ajax
调用中声明返回类型为json
。
users: function(keyword, callback) {
$.ajax({
url: '{path}/get_users/' + keyword,
type: 'get',
dataType: "json", <----here
async: true
}).done(callback);
},