我一直在尝试使用代理进行发布请求。我已经尝试过直接代理、rest 和 ajax 代理,但无法找到 POST 请求的工作示例。
- 可能吗?因为我看到的所有示例都只使用 GET。
- 有任何工作示例或朝这个方向的指示吗?
另外,我想不出在运行时为代理生成 URL 的正确方法是什么,例如,调用函数来返回 URL。
我一直在尝试使用代理进行发布请求。我已经尝试过直接代理、rest 和 ajax 代理,但无法找到 POST 请求的工作示例。
另外,我想不出在运行时为代理生成 URL 的正确方法是什么,例如,调用函数来返回 URL。
如果您查看Ext.data.proxy.Rest的源代码,您会看到 actionMethods的配置对象。它们没有记录,但您应该能够将其作为配置传递给您的代理以覆盖它。
例如:
proxy: {
type: 'ajax',
url: 'path/to/foo',
actionMethods: {
create : 'POST',
read : 'POST',
update : 'PUT',
destroy: 'DELETE'
},
reader: {
type: 'json',
rootProperty: 'root',
totalProperty : 'totalCount'
}
}
看来这可能是不可能的:
http://www.sencha.com/forum/showthread.php?205557-Using-Ext.data.proxy.Ajax-via-a-POST-with-jsonData
POST 请求的最简单示例可能是这样的:
var obj = new Object();
obj.userId = username;
obj.password = password;
var data = Ext.JSON.encode(obj);
Ext.Ajax.request({
url : 'http://myservice/auth/login?_type=json', // url : this.getUrl(),
method : "POST",
headers: {
'Content-Type': 'application/json'
},
params : data,
useDefaultXhrHeader : false,
withCredentials: true,
success : function(response) {
Ext.Msg.alert("Success", "Welcome "+respObj.user.name);
},
failure : function(response) {
var respObj = Ext.JSON.decode(response.responseText);
Ext.Msg.alert("Error", respObj.status.statusMessage);
}
});
请注意,您可以根据自己的方便自定义 url。