对于我在服务中的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");
但它会变为空。
答案 0 :(得分:1)
您正在尝试将jQuery.ajax
替换为具有完全不同合同的AngularJS $http
。您调用originalRequest
的事实上并不是任何类型的请求对象"。它只是Promise
(使用success
和error
方法扩展)。如果要在成功/错误处理程序之外访问请求数据,则需要自行保存并单独传递:
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;
// ...
});