Javascript AngularJS$http.post()触发get请求而不是post
我在angular和laravel中构建了一个API服务,当我启动API的GET调用时,everythings工作正常,但是当我启动POST调用时,服务仍然使用GET方法而不是POST。 这就是我的服务:Javascript AngularJS$http.post()触发get请求而不是post,javascript,angularjs,api,http,Javascript,Angularjs,Api,Http,我在angular和laravel中构建了一个API服务,当我启动API的GET调用时,everythings工作正常,但是当我启动POST调用时,服务仍然使用GET方法而不是POST。 这就是我的服务: function LeadsAPI($http,$q,BASE_URL) { this.updateLead = function (lead_data) { var url = BASE_URL+"/leads/update/"; var deferre
function LeadsAPI($http,$q,BASE_URL)
{
this.updateLead = function (lead_data) {
var url = BASE_URL+"/leads/update/";
var deferred = $q.defer();
$http.post(url , lead_data).then(function(response){
deferred.resolve(response.data);
});
return deferred.promise;
}
}
我从控制器调用此函数:
LeadsController.$inject = ['$scope', 'LeadsAPI'];
function LeadsController($scope , LeadsAPI)
{
LeadsAPI.updateLead({'lead_id' : res._id, 'the_lead': {'fist_name' : 'asd asd'}}).then(function (res) {
console.log(res);
});
}
我尝试将参数作为字符串传递(“a=b&c=d…”),并添加了标题:
$http.defaults.headers.post['Content-Type'] = 'application/x-www-form-urlencoded;charset=utf-8';
在我的应用程序模块实例化的run
函数中,我一直得到405(不允许使用方法)
错误。
有什么办法解决这个问题吗?非常感谢大家!:) GET工作正常。。。好的 POST返回405-不允许使用方法 这听起来像是在进行POST,而您要发布到的服务器不支持对相关端点的POST请求 您能提供更多信息吗?例如,发出GET请求时的HTTP请求和响应头,以及POST请求时的HTTP请求和响应头 您可以通过Firefox Firebug或Chrome控制台中的NET选项卡访问标题信息
$http({
method: 'POST',
url: BASE_URL+"/leads/update/",
data: lead_data
}).then(function (response) {
deferred.resolve(response.data);
});
这个问题似乎很老,还没有答案,但谷歌把我带到了这里。我希望有人会发现这个答案很有用 我也有同样的问题$http设置为POST,但服务器从GET请求返回错误 在web检查器中检查标题后,显示浏览器实际执行了两个请求:
update/ 301 text/html angular.js:11442
update 405 xhr https://test.site/post/update
第一个是来自$http的,第二个是在重定向之后。
正如您所看到的,尾部斜杠URL被重定向到非尾部斜杠URL。通过此重定向,POST请求也会更改为GET
解决方案是将请求url更改为不包含尾部斜杠:
url: BASE_URL+"/leads/update",
你说当你做一件事的时候,每件事都很好。你说的
post
方法是做一个GET。但是你有一个405。我错过了一些东西。GET是否有效?抱歉,如果不清楚,mate,GET方法可以正常工作,当我尝试POST方法时,它不起作用,它仍然作为GET请求启动它,并从laravel返回405错误