Pra*_*ane 4 javascript extjs extjs4
我在extjs4 MVC工作,我已经陷入了一个问题,即如何在单个请求中发送对象数组.我知道如何将单个对象发送到服务器.
1)这是我的一些控制器代码: -
check:function () {
console.log("Inside check function.");
//creating objects in javascript
var obj = new Object();
for (var i = 0; i < 4; i++) {
var inputs = document.getElementsByName(i);
var radio = "";
for (var 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);
var 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
var storeObject = this.getStore('qb.QbquestionoptionStore');
storeObject.sync();
console.log("data send");
}// End of check function
Run Code Online (Sandbox Code Playgroud)
2)型号类:---
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'},
]*/
});
Run Code Online (Sandbox Code Playgroud)
3)这是我的商店:---
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
Run Code Online (Sandbox Code Playgroud)
我该怎么解决这个问题?请给出一些建议....
好吧,首先你必须发送它作为JSON(至少我建议),这很容易做到因为该Ext.Ajax.request()方法支持这个开箱即用
Ext.Ajax.request({
url: 'YourURL',
jsonData: YourObjectRef, // can be any object or JSON string
success: function(response, opts) {
// your code
}
});
Run Code Online (Sandbox Code Playgroud)
如果你想用商店做,请使用autoModelfield 的类型.此类型可以包含任何对象.这是一个JSFiddle,其中包含模型中的对象列表.
以下是商店配置的修改.请注意,您可以定义read唯一的API或CRUD API.对于后者,不可能让destroy行动未设置.你还需要知道,writer你想要对数据进行编码意味着一个root属性,这意味着所有的get发送get都是你想要的.
现在这个代理的作用是:默认情况下batch会true导致商店在调用同步时立即提交所有更改.如果某个操作有多个更改,则代理将提交一个对象数组而不是一个对象.现在,如果您不关心这一点,现在需要预测是否为每个请求获取了一个对象或一组对象.我们不希望最终出现这样的事情.但allowSingle作家的财产让我们了解这一点.如果将其设置为true,它将始终将一组对象发送回服务器,即使只有一个对象也是如此.你现在知道你每次都得到一个数组.
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
}
}
Run Code Online (Sandbox Code Playgroud)