ExtJS Ajax代理 - 编码extraParams

时间:2013-12-16 09:26:55

标签: c# extjs asp.net-web-api url-encoding

请考虑以下事项:

var params = Ext.urlDecode(window.location.search);
var store = Ext.getStore("EntryStore");
store.getProxy().extraParams={'mail':params.mail,'id':params.id};
store.load();

调用时 localhost/mypage/?mail=test@mydomain.com&id=QWERTYUIOP/ASDFGHJKL456+yxcvbnm==
查询
localhost/api/?_dc=1387181002249&mail=test@mydomain.com&id=QWERTYUIOP/ASDFGHJKL456+yxcvbnm==&page=1&start=0&limit=25
它包含保留字符“+”并使后端阻塞该参数。

(C#WebApi后端告诉我id是
QWERTYUIOP/ASDFGHJKL456 yxcvbnm==,而不是原来的 QWERTYUIOP/ASDFGHJKL456+yxcvbnm==


(a)未编码的“+”表示在sencha或
中的错误 (b)一切按预期工作,我应阅读有关如何编码我的参数的手册(请提供一个链接,我找不到)或
(c)Microsoft方面的一个错误导致WebApi阻塞“+”?

亲切的问候,

亚历山大

1 个答案:

答案 0 :(得分:1)

使用空格字符查询字符串需要对其进行正确编码。请参阅this关于该主题的答案。

简而言之,这不是Sencha的错误。它(不一定)是您的API中的错误。

考虑到你正在使用window.location.search来获取查询字符串,问题是你没有正确编码空格就达到了这一点。