为啥这个 AngularJS 代码中的 HTTP POST 返回空? [复制]
Posted
技术标签:
【中文标题】为啥这个 AngularJS 代码中的 HTTP POST 返回空? [复制]【英文标题】:Why is HTTP POST returning empty in this AngularJS code? [duplicate]为什么这个 AngularJS 代码中的 HTTP POST 返回空? [复制] 【发布时间】:2018-06-06 09:59:00 【问题描述】:我正在使用下面的 AngularJS 代码发布到 webhook。 POST 请求会通过 webhook。但是,它没有正文,因此没有返回任何数据。
$scope.addguest = function(guest)
//todo put guest to url
url = "https://requestb.in/18z1tu41";
item =
'property_id':$scope.id,
'originator':guest.phone,
'guest_name':guest.name,
'check_out_date':guest.date
$('#exampleModalPhone').modal('hide');
$http.post(url, item, headers: 'Content-Type': 'application/json' ).success(function (data)
$scope.data= data;
);
我是否在我的代码编写方式上遗漏了什么?是什么导致 POST 为空?
这不是与 CORS 相关的问题,因此不是重复的。
【问题讨论】:
哪个正文是空的....请求还是响应?什么版本的角度? 除非我误解没有请求/响应,否则它不是 API,而是 webhook。 webhook 收到的 POST 是空的。成功返回 HTTP 200 并且 webhook 确实收到了 POST,它只是有一个空正文。 看来你误会了。$http
发出 ajax 请求并在请求正文中发送您的数据并等待响应。如果响应正文为空,则为 api 问题
检查您的开发者控制台是否有错误。 Failed to load https://requestb.in/18z1tu41: Response to preflight request doesn't pass access control check: No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https://run.plnkr.co' is therefore not allowed access.
这是一个 CORS 问题。
【参考方案1】:
不太确定处理 POST 请求的服务是用哪种语言编写的,但在某些语言(例如 php)中,您应该使用不同的编码来避免问题:
$http.post(url, $.param(item), headers: 'Content-Type':'application/x-www-form-urlencoded' )
$.param 会将您的对象转换为 URL 参数格式的键/值对
【讨论】:
以上是关于为啥这个 AngularJS 代码中的 HTTP POST 返回空? [复制]的主要内容,如果未能解决你的问题,请参考以下文章
为啥我的“代码”HTML 元素没有 AngularJS Material 设置的设计?
将BootstrapJS和AngularJS结合使用以及为啥不用jQuery
为啥不推荐使用 AngularJS $http 成功/错误方法?从 v1.6 中删除?