0

对于我在服务中的 Angularjs 应用程序,我使用 Ajax 调用来获取数据,如下所示:

var originalRequest = $.ajax({
                    async : false,
                    url : "/dash/dashboard2ajax.do",
                    type : "POST",
                    data : {
                        action : 'getNetSpendOverTime',
                        customerId : selectedAccTd,
                        carriersId : selectedCarriers,
                        fromDate : formattedFromDate,
                        toDate : formattedToDate
                    },
                    dataType : "json",
                    success : function(originalRequest) {
                        var res = originalRequest;
                        data = res.ResultSet.Response;

                    }
                });

然后我只是从我的服务返回(数据),在我的控制器中我可以毫无问题地获取数据。但我意识到这是一种不好的做法,并试图使用承诺。所以我将其替换如下:

var originalRequest = $http({
            url: "/dash/dashboard2ajax.do",
            method: "POST",
            data: {action : 'getNetSpendOverTime',
                customerId : selectedAccTd,
                carriersId : selectedCarriers,
                fromDate : formattedFromDate,
                toDate : formattedToDate}
        }).success(function(data, status, headers, config) {
           return (data);
        }).error(function(data, status, headers, config) {
            return(status);
        });

但它不起作用。甚至没有任何参数被传递给我的动作类。我的语法有什么错误吗?

在我的动作类中,我将参数访问为

String action = request.getParameter("action");

但它是空的。

4

1 回答 1

1

您正在尝试用具有完全不同合同jQuery.ajax的 AngularJS替换。$http您调用的东西originalRequest实际上不是任何类型的“请求对象”。它只是一个(用和方法Promise扩展)。如果您想在成功/错误处理程序之外访问请求数据,您需要自己单独保存和传递:successerror

var data = {
    // ...
};
var request = $http({
    data: data,
    // ...
});
return {
    request: request,
    data: data
};

如果您需要在处理程序中访问它,只需从config参数中获取它:

$http(...).success(function (data, status, headers, config) {
    var action = config.data.action;
    // ...
});
于 2014-11-26T09:54:18.987 回答