gpt4 book ai didi

javascript - 如何在 extjs4 的单个请求中将对象数组发送到服务器端?

转载 作者:搜寻专家 更新时间:2023-11-01 05:24:29 24 4
gpt4 key购买 nike

我在 extjs4 MVC 中工作,我一直被困在如何在单个请求中发送对象数组的问题上。我知道如何将单个对象发送到服务器。

1)这是我的一些 Controller 代码:-

    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

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'},
]*/
});

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

我该如何解决这个问题?请给出一些建议....

最佳答案

好吧,首先你必须将它作为 JSON 发送(至少我建议这样做)并且这很容易完成,因为 Ext.Ajax.request() 方法开箱即用地支持这一点

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

如果您想对商店执行此操作,请为模型字段使用 auto 类型。此类型可以包含任何对象。这是一个 JSFiddle 包含模型中的对象列表。

这是对您的商店配置的修改。请注意,您可以定义一个read only API 或一个CRUD API。对于后者,不可能离开 f.e. destroy 操作未设置。您还需要知道 writer 中的根属性意味着您想要对数据进行编码,这意味着所有数据都通过 get 发送,这是绝对不是你想要的。

现在该代理做什么默认 batch 将是 true 这将导致 store调用同步时立即提交所有 更改。如果某个操作有多个更改,则代理将提交一组对象而不是单个对象。现在,如果您不关心这一点,您现在需要预测是否为每个请求获取一个对象或对象数组。我们不想以这样的方式结束。但是 writer 的 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
}
}

关于javascript - 如何在 extjs4 的单个请求中将对象数组发送到服务器端?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14499675/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com