我有一个需要从超过30秒的HTTP请求返回的JsonStore。
在JsonStore配置上设置“timeout”属性不会覆盖30秒超时,也不会设置代理(而不仅仅是设置url属性)并在代理上设置超时。
如何延长此超时?
(我正在使用Ext JS 3.1.1)
var ds = new Ext.data.JsonStore({
autoSave: true,
method: "POST",
/*url: "search-ajax.aspx",
timeout: 120000,*/
root: "rows",
totalProperty: "results",
idProperty: "primarykeyvalue",
proxy: new Ext.data.HttpProxy({ url: "search-ajax.aspx", timeout: 120000 }),
fields: previewColumnConfig,
baseParams: {
Command: "",
ID: primaryKeyValue,
Entity: entityFullName,
vetype: ValidationEntityType,
vepk: ValidationEntityPK,
now: (new Date()).getTime()
},
writer: new Ext.data.JsonWriter({
encode: true,
listful: false
})
});
答案 0 :(得分:36)
如果您希望整个应用中的超时时间相同,请在Ext.Ajax
单例上全局设置。
Ext.Ajax.timeout = 120000; //2 minutes
如果您希望仅针对单个请求以不同方式设置超时,则需要在var中定义HttpProxy
并在将其传递到JsonStore
配置之前修改其中一个属性。 conn
属性仅接受用于该请求的选项。
var proxy = new Ext.data.HttpProxy({ url: "search-ajax.aspx" });
proxy.conn = { timeout: 120000 };
答案 1 :(得分:12)
没有在var
中定义代理或连接proxy: new Ext.data.HttpProxy(
new Ext.data.Connection({
url: "search-ajax.aspx",
timeout: 120000 })),
答案 2 :(得分:2)
您可以定义:
var proxy1 = new Ext.data.HttpProxy(
{
url: 'yourUrl',
reader: {
type: 'json',
root: 'items',
totalProperty: 'total'
}
});
proxy1.timeout = 600000;
它包括代理中的读者
答案 3 :(得分:2)
我知道这个问题已经过时但是想添加覆盖选项我发现它可以在 ExtJS 4.2.2中运行
Ext.override(Ext.data.proxy.Ajax, { timeout: 120000 });
我在应用init
中完成了覆盖,但是,我认为您可以在request
之前的任何位置完成覆盖。
此外,如果您使用的是JsonP,则此覆盖适用于我:
Ext.data.proxy.JsonP.timeout = 120000;