2012-07-13 67 views
3

我在玩家和锦标赛之间有mongodb中的多对多关系。多对多Ajax表单(Symfony2表单)

我希望能够一次将很多玩家添加到锦标赛中。这在没有Ajax的情况下很简单,但是我们拥有数以千计的玩家数据库,因此表单选择变得非常庞大。

我们想为此使用ajax。是否有可能创建一个单一的部件(与JS)来处理这个正确?如果是这样,任何提示什么jQuery插件(或其他)使用?

如果没有,那么标准策略是做什么的?我想我可以大幅改变这个表单的视图,并使用ajax自动完成来一次添加一个玩家,然后再添加一些代码来删除每个玩家。不过,我真的很想拥有一个我可以重复使用的小工具,因为它非常干净,而且效率更高。

我一直在玩Select2(与jQuery Chosen相似),并且我通过ajax添加了许多玩家,但它不允许我在初次加载页面时设置已连接的玩家,所以我将无法看到谁已经参加比赛,并且不得不重新输入每个人。

感谢您对此事的任何意见!我无法通过Google找到任何内容。

回答

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); 
    } 
    }); 
});