我正在使用角度和内置的$http指令来发布到我们的API端点。它可以在Chrome中工作,但是我在Safari中遇到了问题。这是我的 API 工厂打来的电话:
assignments: function(csv) {
var deferred = $q.defer();
$http({
method: 'POST',
url: '/api/numbers/assignments',
data: $.param({
skipBillables: false,
assignments: csv,
}),
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).success(function(data) {
deferred.resolve(data);
}).error(function(data) {
deferred.reject(data);
})
return deferred.promise;
},
现在,我的控制器使用我创建的 API 分配。下面是以下代码片段:
Api.updateSubscription(org.id, cardData).then(function(data) {
Api.getSession().then(function(data) {
if (!_($scope.savedTollFreeNumberCheckout).isBlank()) {
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) {
$window.location.reload();
});
};
});
});
当我称之为时,它可以在Chrome中工作。唯一无法正常工作的浏览器是Safari。在 Safari 中,调用的完整 URL 是:http://local.appname.com:9000/18775078169,useremai@email.com,percentageparameter,这不是正确的端点。在 Chrome 中,它正在击中 http://local.appname.com:9000/api/numbers/assignments 如果有人对修复有任何建议,我将非常感谢您的帮助。
如果您打算将数据作为带有 post 请求的 json 对象发送,我认为您不需要 $.params。
$.param 主要用于序列化查询参数的参数。
assignments: function(csv) {
var deferred = $q.defer();
$http({
method: 'POST',
url: '/api/numbers/assignments',
data: {
skipBillables: false,
assignments: csv,
},
headers: {
'Content-Type': 'application/json'
}
}).success(function(data) {
deferred.resolve(data);
}).error(function(data) {
deferred.reject(data);
})
return deferred.promise;
},
你应该这样做,或者如果你真的想将数据作为查询参数发送
assignments: function(csv) {
var deferred = $q.defer();
$http({
method: 'POST',
url: '/api/numbers/assignments'+'?'+$.params({ skipBillables: false,assignments: csv}),
headers: {
'Content-Type': 'application/x-www-form-urlencoded'
}
}).success(function(data) {
deferred.resolve(data);
}).error(function(data) {
deferred.reject(data);
})
return deferred.promise;
},
但作为发送数据的好习惯
获取请求 - 使用查询参数
发布请求 - 使用 json