ejemplo javascript jquery backbone.js backbone-collections

javascript - ejemplo - ¿Obtener una colección usando una solicitud POST?



getelementsbytagname php (4)

He logrado trabajar con API REST para fetch() datos fetch() donde las URL contienen parámetros mínimos (y usan GET ).

¿Cómo se podría recuperar una colección a través de una solicitud POST ?


Backbone.sync es la función utilizada para interactuar con el servidor a través de sus modelos. Puede proporcionar su propia implementación que emita una solicitud POST para el método de "lectura" en lugar de GET. Ver http://documentcloud.github.com/backbone/#Sync


Es posible que deba extender el objeto Colección para instalar su propia convención para recuperaciones. Al hacerlo, es probable que proporciones tu propia función de búsqueda. Algo como:

fetch : function(options) { options || (options = {}); var model = this; var success = function(resp) { if (!model.set(model.parse(resp), options)) return false; if (options.success) options.success(model, resp); }; var error = wrapError(options.error, model, options); (this.sync || Backbone.sync)(''create'', this, success, error); return this; }

donde usa ''crear'' en lugar de ''leer''. A primera vista, esto es lo que probaría primero, aunque puede haber una forma más elegante de hacerlo.

La desventaja de este enfoque es que esencialmente tienes código de framework en tu aplicación y si el framework cambia puedes encontrar problemas. Haría bien en dividir en compartimentos este cambio en una capa separada para facilitar la actualización con nuevas versiones de marcos.


También tenga en cuenta que fetch admite los parámetros Jquery.ajax, por lo que puede establecer fácilmente type = post en la llamada.

Messages.fetch({data: {api_key: ''secretkey''}, type: ''POST''});

Para más parámetros: http://api.jquery.com/jQuery.ajax/


try { // THIS for POST+JSON options.contentType = ''application/json''; options.type = ''POST''; options.data = JSON.stringify(options.data); // OR THIS for GET+URL-encoded //options.data = $.param(_.clone(options.data)); console.log(''.fetch options = '', options); collection.fetch(options); } catch (excp) { alert(excp); }