我有一個角度應用程序。我遇到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試過了。它似乎不是問題的根源。 –