1

我一直在尝试使用代理进行发布请求。我已经尝试过直接代理、rest 和 ajax 代理,但无法找到 POST 请求的工作示例。

  1. 可能吗?因为我看到的所有示例都只使用 GET。
  2. 有任何工作示例或朝这个方向的指示吗?

另外,我想不出在运行时为代理生成 URL 的正确方法是什么,例如,调用函数来返回 URL。

4

3 回答 3

1

如果您查看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'
        }
    }
于 2013-11-14T03:02:32.613 回答
1

看来这可能是不可能的:

http://www.sencha.com/forum/showthread.php?205557-Using-Ext.data.proxy.Ajax-via-a-POST-with-jsonData

于 2013-10-04T15:39:26.870 回答
0

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。

于 2013-05-17T05:31:00.223 回答