我在玩家和锦标赛之间有mbitodb的多对多关系。
我希望能够立刻为锦标赛添加许多玩家。如果没有ajax,这是微不足道的,但是我们拥有数以千计的玩家,因此表单选择变得非常庞大。
我们想为此使用ajax。是否可以创建一个小部件(使用js)来正确处理这个问题?如果是这样,有关jquery插件(或其他)使用的任何提示?
如果没有,最新的标准策略是什么?我想我可以大量更改此表单的视图并使用ajax自动完成功能一次添加一个播放器,然后再使用一些代码来逐个删除每个播放器。但是,我真的很想拥有一个可以重复使用的小部件,因为它更干净,效率更高。
我整天都在玩Select2(类似于jQuery Chosen),我让它通过ajax添加很多玩家,但是当我最初加载时它不允许我设置已连接的玩家页面,所以我将无法看到谁已经参加比赛,并且必须重新输入所有人。
感谢您对此事的任何意见!我无法通过谷歌找到任何东西。
答案 0 :(得分:5)
我能够通过$.ajax
在onload函数中的构造函数之后完成此任务,其中//website/jsonItem
是所有项的json编码列表,//website/jsonItemUser
是json编码列表附加到用户的所有项目。我使用//
来保持调用之间的https/http
一致。
$(document).ready(function(){
$('.selectitem').select2({
minimumInputLength:0
,multiple: true
,ajax: {
url: "//website/jsonItem"
,dataType: 'jsonp'
,data: function (term, page) {
return {
q: term, // search term
limit: 20,
page: page
};
}
,results: function (data, page) {
var more = (page * 20) < data.total;
return {
results: data.objects, more: more
};
}
}
,initSelection: function(element, callback){
var items=new Array();
$.ajax({
url: "//website/jsonItemUser"
});
callback(items);
}
});
$.ajax({
url: "//website/jsonItemUser"
,dataType: 'jsonp'
,success: function(items, status, ob) {
$('.selectitem').select2('data',items);
}
});
});