como enviair uma série de objects paira o lado do server em um único request no extjs4?

Estou trabalhando no extjs4 MVC e fiquei preso em um ponto que é como enviair uma matriz de objects em uma única solicitação. Eu sei como enviair um único object paira o server.

1) Aqui está o meu código de controlador: –

  • Como eu mudo a saída .save () JSON paira ExtJS 4.2
  • Exj JS 5, Access Store / Model from ViewController
  • Extjs - Melhor maneira de iterair através de registros exibidos em uma loja airmazenada em buffer
  • Obter o valor da loja com o nome da coluna - EXTJS 4
  • ExtJS Ajax problemas paira painel de grade
  • Evitair a guia no campo
  • check:function () { console.log("Inside check function."); //creating objects in javascript vair obj = new Object(); for (vair i = 0; i < 4; i++) { vair inputs = document.getElementsByName(i); vair radio = ""; for (vair j = 0; j < inputs.length; j++) { if (inputs[j].checked) { name = inputs[j].name; value = inputs[j].value; //obj[i].name1=name; obj[i] = {'questionId': name, 'option': value}; console.log("questionId=" + name + " value=" + value); console.log("object name=" + obj[i].questionId + " Object value=" + obj[i].option); vair check = Ext.ModelManager.create( { questionId: name, option: value, }, 'Balaee.model.qb.QbquestionoptionModel'); console.log("User Infooooooooo:" + check.get('option')); }// End of if statment }// End of inner for loop }//End of outer for loop vair storeObject = this.getStore('qb.QbquestionoptionStore'); storeObject.sync(); console.log("data send"); }// End of check function 

    2) Classe do model: —

     Ext.define('Balaee.model.qb.QbquestionoptionModel',{ extend: 'Ext.data.Model', idproperty:'',//fields property first position pk. fields: ['optionId','questionId','isAnswer','option','media','keyword','mediaTypeId',], /*associations:[ {type:'BelongsTo', model:'Mediatype', foreignKey:'mediaTypeId'}, {type:'BelongsTo', model:'Qbquestion', foreignKey:'questionId'}, {type:'HasMany', model:'Qbregistereduserfreequestionawnser', foreignKey:'answerOptionId'}, ]*/ }); Estender: 'Ext.data.Model', Ext.define('Balaee.model.qb.QbquestionoptionModel',{ extend: 'Ext.data.Model', idproperty:'',//fields property first position pk. fields: ['optionId','questionId','isAnswer','option','media','keyword','mediaTypeId',], /*associations:[ {type:'BelongsTo', model:'Mediatype', foreignKey:'mediaTypeId'}, {type:'BelongsTo', model:'Qbquestion', foreignKey:'questionId'}, {type:'HasMany', model:'Qbregistereduserfreequestionawnser', foreignKey:'answerOptionId'}, ]*/ }); ] * / Ext.define('Balaee.model.qb.QbquestionoptionModel',{ extend: 'Ext.data.Model', idproperty:'',//fields property first position pk. fields: ['optionId','questionId','isAnswer','option','media','keyword','mediaTypeId',], /*associations:[ {type:'BelongsTo', model:'Mediatype', foreignKey:'mediaTypeId'}, {type:'BelongsTo', model:'Qbquestion', foreignKey:'questionId'}, {type:'HasMany', model:'Qbregistereduserfreequestionawnser', foreignKey:'answerOptionId'}, ]*/ }); 

    3) Aqui está minha loja: —

     Ext.define('Balaee.store.qb.QbquestionoptionStore',{ extend: 'Ext.data.Store', model: 'Balaee.model.qb.QbquestionoptionModel', //autoLoad: true, proxy: { type:'ajax', api: { read:'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer11', create: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer12', update: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer13', //destroy: , },//End of api reader: { type:'json', //root: , //successProperty: , },//End of reader writer: { type:'json', root:'data' } }//End of proxy });//End of store Estender: 'Ext.data.Store', Ext.define('Balaee.store.qb.QbquestionoptionStore',{ extend: 'Ext.data.Store', model: 'Balaee.model.qb.QbquestionoptionModel', //autoLoad: true, proxy: { type:'ajax', api: { read:'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer11', create: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer12', update: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer13', //destroy: , },//End of api reader: { type:'json', //root: , //successProperty: , },//End of reader writer: { type:'json', root:'data' } }//End of proxy });//End of store // autoLoad: true, Ext.define('Balaee.store.qb.QbquestionoptionStore',{ extend: 'Ext.data.Store', model: 'Balaee.model.qb.QbquestionoptionModel', //autoLoad: true, proxy: { type:'ajax', api: { read:'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer11', create: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer12', update: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer13', //destroy: , },//End of api reader: { type:'json', //root: , //successProperty: , },//End of reader writer: { type:'json', root:'data' } }//End of proxy });//End of store { Ext.define('Balaee.store.qb.QbquestionoptionStore',{ extend: 'Ext.data.Store', model: 'Balaee.model.qb.QbquestionoptionModel', //autoLoad: true, proxy: { type:'ajax', api: { read:'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer11', create: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer12', update: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer13', //destroy: , },//End of api reader: { type:'json', //root: , //successProperty: , },//End of reader writer: { type:'json', root:'data' } }//End of proxy });//End of store { Ext.define('Balaee.store.qb.QbquestionoptionStore',{ extend: 'Ext.data.Store', model: 'Balaee.model.qb.QbquestionoptionModel', //autoLoad: true, proxy: { type:'ajax', api: { read:'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer11', create: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer12', update: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer13', //destroy: , },//End of api reader: { type:'json', //root: , //successProperty: , },//End of reader writer: { type:'json', root:'data' } }//End of proxy });//End of store { Ext.define('Balaee.store.qb.QbquestionoptionStore',{ extend: 'Ext.data.Store', model: 'Balaee.model.qb.QbquestionoptionModel', //autoLoad: true, proxy: { type:'ajax', api: { read:'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer11', create: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer12', update: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer13', //destroy: , },//End of api reader: { type:'json', //root: , //successProperty: , },//End of reader writer: { type:'json', root:'data' } }//End of proxy });//End of store { Ext.define('Balaee.store.qb.QbquestionoptionStore',{ extend: 'Ext.data.Store', model: 'Balaee.model.qb.QbquestionoptionModel', //autoLoad: true, proxy: { type:'ajax', api: { read:'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer11', create: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer12', update: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer13', //destroy: , },//End of api reader: { type:'json', //root: , //successProperty: , },//End of reader writer: { type:'json', root:'data' } }//End of proxy });//End of store } Ext.define('Balaee.store.qb.QbquestionoptionStore',{ extend: 'Ext.data.Store', model: 'Balaee.model.qb.QbquestionoptionModel', //autoLoad: true, proxy: { type:'ajax', api: { read:'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer11', create: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer12', update: 'http://localhost/balaee/Balaee/index.php?r=QuestionBank/qbpaper/SetUserAnswer13', //destroy: , },//End of api reader: { type:'json', //root: , //successProperty: , },//End of reader writer: { type:'json', root:'data' } }//End of proxy });//End of store 

    Como posso resolview isso? por favor, sugira …

  • Usando a roda do mouse paira rolair na aplicação Sencha Touch na área de trabalho
  • Render button de rádio personalizado no ExtJS 3
  • Sencha Touch 2: Facebook JS SDK não está funcionando no dispositivo, apenas no browser do computador
  • como adicionair evento de clique na etiqueta Extjs 4
  • Extjs reset filefield input
  • Estrutura de JavaScript paira diagramas de stream de trabalho de desenho
  • 2 Solutions collect form web for “como enviair uma série de objects paira o lado do server em um único request no extjs4?”

    Bem, primeiro você deve enviá-lo como JSON (pelo less eu recomendo isso) e isso pode ser feito facilmente porque o método Ext.Ajax.request() aceita isso fora da checkbox

     Ext.Ajax.request({ url: 'YourURL', jsonData: YourObjectRef, // can be any object or JSON string success: function(response, opts) { // your code } }); Ext.Ajax.request ({ Ext.Ajax.request({ url: 'YourURL', jsonData: YourObjectRef, // can be any object or JSON string success: function(response, opts) { // your code } }); sucesso: function (resposta, opta) { Ext.Ajax.request({ url: 'YourURL', jsonData: YourObjectRef, // can be any object or JSON string success: function(response, opts) { // your code } }); } Ext.Ajax.request({ url: 'YourURL', jsonData: YourObjectRef, // can be any object or JSON string success: function(response, opts) { // your code } }); 

    E se você quiser fazê-lo com uma loja use o tipo auto paira o Modelfield. Esse tipo pode conter qualquer object. Aqui está um JSFiddle com uma list de objects dentro de um model.

    Aqui está uma modificação da configuration da sua loja. Observe que você pode definir uma API somente de read ou uma API CRUD . Paira o posterior, não é possível deixair a ação destroy desativada. Você também precisa saber que uma propriedade de raiz dentro do writer implica que você deseja codificair seus dados, o que significa que todos enviam via get que é desafiadoramente o que você deseja.

    Agora, paira o que este proxy faz: Por batch padrão será true que fairia com que a loja enviasse todas as alterações ao mesmo tempo quando a synchronization é chamada. Se houview mais do que uma alteração paira uma ação, o proxy enviairá uma matriz de objects ao invés de um único. Agora, se você não se preocupair com isso, você precisairia preview se você obteve um object ou uma vairiedade de objects paira cada request. Não queremos acabair em algo assim. Mas há a propriedade allowSingle no escritor que nos allowSingle em torno disso. Se você configurá-lo como true ele sempre enviairá uma série de objects de volta paira o server, mesmo que exista apenas um. Agora você sabe que você obtém uma matriz de cada vez.

     proxy:{ type:'ajax', api: { read:'index.php?r=...', create: 'index.php?r=...', update: 'index.php?r=...', destroy: 'index.php?r=...', }, reader: { type:'json', root:'data' }, writer: { type:'json', allowSingle: false } } api: { proxy:{ type:'ajax', api: { read:'index.php?r=...', create: 'index.php?r=...', update: 'index.php?r=...', destroy: 'index.php?r=...', }, reader: { type:'json', root:'data' }, writer: { type:'json', allowSingle: false } } }, proxy:{ type:'ajax', api: { read:'index.php?r=...', create: 'index.php?r=...', update: 'index.php?r=...', destroy: 'index.php?r=...', }, reader: { type:'json', root:'data' }, writer: { type:'json', allowSingle: false } } leitor: { proxy:{ type:'ajax', api: { read:'index.php?r=...', create: 'index.php?r=...', update: 'index.php?r=...', destroy: 'index.php?r=...', }, reader: { type:'json', root:'data' }, writer: { type:'json', allowSingle: false } } }, proxy:{ type:'ajax', api: { read:'index.php?r=...', create: 'index.php?r=...', update: 'index.php?r=...', destroy: 'index.php?r=...', }, reader: { type:'json', root:'data' }, writer: { type:'json', allowSingle: false } } escritor: { proxy:{ type:'ajax', api: { read:'index.php?r=...', create: 'index.php?r=...', update: 'index.php?r=...', destroy: 'index.php?r=...', }, reader: { type:'json', root:'data' }, writer: { type:'json', allowSingle: false } } } proxy:{ type:'ajax', api: { read:'index.php?r=...', create: 'index.php?r=...', update: 'index.php?r=...', destroy: 'index.php?r=...', }, reader: { type:'json', root:'data' }, writer: { type:'json', allowSingle: false } } 

    Se você quiser enviair vários registros de uma loja através de uma única solicitação de proxy como uma matriz, você deve configurair o seu gravador com a configuration allowSingle como falsa . Isso forçairá a sua solicitação de proxy paira envolview o object de solicitação em uma matriz, mesmo que apenas uma instância de um único model esteja sendo salva / adicionada / etc.

    http://docs.sencha.com/ext-js/4-1/#!/api/Ext.data.writer.Json-cfg-allowSingle

     writer: { type:'json', root:'data', allowSingle: false } escritor: { writer: { type:'json', root:'data', allowSingle: false } 
    JavaScript é a melhor linguagem de programação de script e tem Node.js, AngularJS, vue.js e muitos bons framework JS.