我有一个rest api,我想从extjs中读取。这些是其余api期望的参数:
params = {
sort: 'idlevel',
filter: {
active: true,
idup: {
'null': 0
}
}
}
如您所见,它是一个非常简单的Javascript对象。这些参数就像使用Reactjs构建的另一个应用程序的魅力一样。从Extjs商店,我是这样从我的商店发送它们的:
...
proxy: {
type: 'ajax',
headers: {
'Accept': '*/*',
'Cache-Control': 'no-cache',
'Content-Type': 'application/json',
'Authorization': localStorage.token
},
extraParams: {
sort: 'idlevel',
filter: {
active: true,
idup: {
'null': 0
}
}
}
...
问题是这将返回验证失败错误。当我进入浏览器的网络历史记录时,会看到以下查询字符串参数:
_dc: 1556221645266
filter: [object Object]
filter: true
sort: idlevel
page: 1
start: 0
limit: 25
我不知道为什么Extjs将extraParams
中的javascript对象变成这个奇怪的东西。所以我的问题是:如何告诉Extjs以正确的方式假定这些参数?我在这里错过了一些琐碎的事情吗?
更新: 这是使用react时的查询字符串输出:
sort: idlevel
filter[active]: true
答案 0 :(得分:1)
如果react中的查询字符串如下所示:
sort: idlevel
filter[active]: true
然后在extjs ajax代理中应该是:
var myStore = Ext.create('Ext.data.Store', {
autoLoad: true,
fields: ['a'],
noCache: true,
remoteSort: false,
remoteFilter: false,
pageSize: 0,
proxy: {
url: "http://example.xyz",
noCache: false,
type: 'ajax',
headers: {
'Accept': '*/*',
'Cache-Control': 'no-cache',
'Content-Type': 'application/json',
'Authorization': localStorage.token
},
extraParams: {
sort: 'idlevel',
'filter[active]': true
}
}
});
答案 1 :(得分:0)
您正在通过url发送一个对象,该对象应该是纯文本,我的建议是在对象中使用JSON.stringify()
,类似这样
extraParams: {
sort: 'idlevel',
filter: JSON.stringify({
active: true,
idup: {
'null': 0
}
})
}
然后在后端,您可以再次在对象中转换字符串