【发布时间】:2015-12-31 06:23:16
【问题描述】:
我有一个带有 http.post 请求的角度控制器,但我没有得到响应,该服务运行良好,因为使用邮递员对其进行了测试。
当页面加载时,我需要在 HTLM 表中显示来自 WS 的数据(我知道如何做这部分),我正在发送变量名称“data”中的请求正文,变量名称“config”中的标头配置以及对我的 WS 的 URL 的 http.post 调用。
我是 Angular 新手,所以我不知道我是否遗漏了什么,我也想在控制台中打印响应以测试它是否返回了我所期望的。
我从网上找到的示例中获取了此代码并对其进行了修改,在示例中,有一个按钮可以调用 SendData() 函数,但我不需要按钮,调用必须为页面已加载。
这是控制器代码
.controller("HttpGetTestController", function ($scope, $http) {
$scope.SendData = function () {
var data = {
"userId":"mdrodri",
"token":"840430482834947828876768058086529370654",
"domain":"MX",
"filters":{
"timeFrameType":"Week (FiscalYear)",
"custMembSelectionType":"TOTAL",
"locationSelectionType":"Country",
"merchandiseSelectionType":"SBU",
"startYear":"2015",
"endYear":"2015",
"startUnit":"1",
"endUnit":"1",
"comparator":false,
"locationSelections":["CA"],
"merchandiseSelections":["SBU38"],
"custMembSelections":["TOTAL"],
"metricSelections":["Product Sales (Category Rank)"],
"rankOrder":"10"
},
"additionalFilters":[],
"cache":false
};
var config = {
headers : {
'Content-Type': 'application/json;'
}
}
$http.post('http://whateverurl/', data, config)
.success(function (data, status, headers, config) {
$scope.PostDataResponse = data;
console.log("Success");
})
.error(function (data, status, header, config) {
$scope.ResponseDetails = "Data: " + data +
console.log("Data: " + data);
console.log("Status: " + status);
console.log("Headers: " + header);
console.log("Config: " + config);
});
};
})
在我的 HTML 中,这就是我调用该控制器的方式
<div class="panel panel-default" ng-controller="HttpGetTestController">
感谢您的时间和帮助。
【问题讨论】:
-
http://whateverurl/是否支持CORS?如果不是,由于浏览器内置的相同来源策略限制,您将无法从不同的域调用它。这解释了为什么您的请求在由 Postman 发出但不在浏览器中使用 AJAX 时有效。只需查看浏览器的控制台,您就会看到请求已被阻止的警告。 -
服务器必须启用CORS头,你必须添加$httpProvider.defaults.useXDomain = true;
-
实际上我在本地网络上工作,我检查了我的控制台,里面什么都没有。 :(
-
@AlbertCyberhulk 我应该在哪里添加 $httpProvider 的东西?因为我和我的头类型在配置变量中。
-
您能在浏览器的“网络”选项卡中看到正在发送的请求吗?
标签: javascript angularjs