我讨厌问,因为有很多问题需要处理这个问题,但是我还没有把任何数据发布到ASP.NET Web API 2方法。这一切都来自同一个主机和端口。
这是我的服务器端代码:
Super
使用Javascript:
[RoutePrefix("api/help")]
public class HelpAPIController : ApiController
...
public class Item {
public string name { get; set; }
public string position { get; set; }
}
[Route]
[HttpPost]
public void Post([FromBody] Item[] stuff)
; // we get here but data is always null or zero items in array
}
实际请求内容(无硬回复):
"use strict";
var a = [{ "name": "me", "position": "here" },
{ "name": "me", "position": "here" },
{ "name": "me", "position": "here" }];
jQuery.ajax({
type: "POST",
datatype: "application/json",
url: "/api/help/",
data: { "stuff": JSON.stringify(a) },
success: function (data) { alert(data); },
error: function (error) {
...
}
});
答案 0 :(得分:2)
尝试在Ajax POST中添加<div class="col-xs-6">
<ul class="list-group itemList">
<li class="list-group-item" ng-repeat="(id, product) in drinks" ng-click="addToShoppingList(id)" ng-hide="product.isHidden===true">
<strong>{{ product.name }}</strong> - {{ product.price | currency }}
</li>
</ul>
</div>
$scope.addToShoppingList = function(id){
$scope.itemsToBuy.push($scope.drinks[id]);
$scope.drinks[id].isHidden = true;
};
。
您有dataType,我认为这是您期望从服务器返回的内容,而contentType就是您要发送的内容。
答案 1 :(得分:2)
您没有将内容类型传递给服务器。 datatype
是您对服务器的期望响应类型。 contentType
就是您发送的内容。 jQuery中的默认contentType
为application/x-www-form-urlencoded; charset=UTF-8
。您需要添加/编辑:
dataType: "json",
contentType: "application/json",
您不需要使用对象包装数据数组。这样做:
data: JSON.stringify(a),