-->

在relacing Ajax请求,在服务承诺Angularjs问题(Angularjs issue

2019-10-21 01:13发布

对于我在服务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");

但它是未来为空。

Answer 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;
    // ...
});


文章来源: Angularjs issue in relacing Ajax request with promises in service