Javascript 如何在ExtJS 4.1.0代理或读取器中更改请求URI
实际上,带有Rest代理和Json读取器的ExtJS 4.1要求这样的URI(尽管是urlencoded):Javascript 如何在ExtJS 4.1.0代理或读取器中更改请求URI,javascript,rest,extjs,extjs4,uri,Javascript,Rest,Extjs,Extjs4,Uri,实际上,带有Rest代理和Json读取器的ExtJS 4.1要求这样的URI(尽管是urlencoded): http://localhost:8000/api/v1/choice/?filter=[{“属性”:“问题id”,“值”:2}] 我的服务器希望筛选请求看起来像: http://localhost:8000/api/v1/choice/?question_id=2 我已经查看了代理的filterParamconfig,但它似乎并不相关。是否有一种实用的方法来实现服务器所需的请求URI?
http://localhost:8000/api/v1/choice/?filter=[{“属性”:“问题id”,“值”:2}]
我的服务器希望筛选请求看起来像:
http://localhost:8000/api/v1/choice/?question_id=2
我已经查看了代理的
filterParam
config,但它似乎并不相关。是否有一种实用的方法来实现服务器所需的请求URI?没有简单(容易)的方法。您必须扩展现有的代理
类。查看Ext.data.proxy.proxy
和Ext.data.proxy.Server
的源代码。首先看看函数getParams
和buildUrl
下面的内容并不漂亮,但它很有效。现在去修理那该死的商店
/**
* Customized to send ../?prop=val&prop2=val2 urls.
*/
buildUrl: function(request) {
var url = this.url;
var filters = eval(request.params['filter']);
if (filters) {
delete request.params['filter'];
url += '?'
for (var i = 0; i < filters.length; i++) {
var filterString = filters[i].property + "=" + filters[i].value;
if (url.slice(url.length-1) === '?') {
url += filterString;
} else {
url += '&' + filterstring;
}
}
};
return url;
},
/**
*自定义以发送../?prop=val&prop2=val2 URL。
*/
buildUrl:函数(请求){
var url=this.url;
var filters=eval(request.params['filter']);
如果(过滤器){
删除request.params['filter'];
url+='?'
对于(变量i=0;i
谢谢。我现在正在查看buildUrl
。如果我得到了一些工作,我会张贴它来结束这件事。