我有一个角度应用程序。我遇到POST调用并使用$ http指令。在我的控制器使我通过API服务的消费,我提出两个电话:)getMe(和和任务(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("https://stackoverflow.com/users/me");
},
<script src="https://ajax.googleapis.com/ajax/libs/angularjs/1.2.15/angular.min.js"></script>
这里是在控制器中的实际通话。我们向用户端点发出GET请求,然后发布到回调中的分配。
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,[email protected],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相关的bug已修复。 – georgeawg
谢谢@georgeawg我会试试看。 –
@georgeawg试过了。它似乎不是问题的根源。 –