【发布时间】:2017-07-13 05:58:06
【问题描述】:
我有一个角度应用程序。我在使用 POST 调用和使用 $http 指令时遇到问题。在我的控制器中,我通过使用我所做的 Api 服务进行了两次调用:getMe() 和 and assignments(csv):
assignments: function(csv) {
var deferred = $q.defer();
$http({
method: 'POST',
url: '/api/numbers/assignments',
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
},
data: $.param({
skipBillables: false,
assignments: csv,
})
}).success(function(data) {
deferred.resolve(data);
}).error(function(data) {
deferred.reject(data);
})
return deferred.promise;
},
getMe: function() {
return this.cachedGet("/users/me");
},
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
这是控制器中的实际调用。我们向用户端点发出 GET 请求,然后在回调中发布到 assignments。
Api.getMe().then(function(data) {
}, function(error) {
$window.location.reload();
}).finally(function() {
var checkouttollfreenumber = '1' + $scope.savedTollFreeNumberCheckout.tfn;
var assignObj = [{
phoneNum: checkouttollfreenumber,
email: owner.emailAddress,
percent: 0,
}];
var csvFile = downloadCSV(assignObj);
console.log(csvFile);
Api.assignments(csvFile).then(function(data) {
//do something
})
});
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
它在 Chrome 和 Firefox 中正确执行,但在 Safari 中不正确。在 Safari 中,它调用 GET 请求到 http:applicationname.com/18885052939,useremail@email.com,percentageparameter。请求实际上是调用 POST 调用的序列化参数来赋值。
在 Chrome 中,我们有正确的行为。在用户/我的 GET 请求之后,我们使用 POST 数据参数点击http://local.appname.com:9000/api/numbers/assignments。
不确定是什么导致了 Safari 中的错误,但想知道我哪里出错了。这是旧版本的 Angular (1.2.15)。
【问题讨论】:
-
Angular v1.2 的最新错误修复是 v1.2.32。试试那个版本,看看是否修复了任何与 Safari 相关的错误。
-
谢谢@georgeawg 我会试一试的。
-
@georgeawg 试过了。这似乎不是问题的根源。
标签: angularjs ajax http asynchronous safari