Web API如下
[Route("saveFieldGroupForPayerRequestType")]
[HttpPost]
[ExcludeFromCodeCoverage]
public HttpResponseMessage SaveFieldGroupForPayerRequestType(List<PayerReqTypeFieldGroupMap> PayerReqTypeFieldGrpMapLists)
{
// Business Logic
}
模型如下
public class PayerReqTypeFieldGroupMap
{
public string TPSPayerId { get; set; }
public string RequestTypeCode { get; set; }
public string FieldGroupDesc { get; set; }
public bool IsEnabled { get; set; }
}
和jQuery ajax呼叫如下
var PyrReqTypeFieldGrpMapsObject;
var PayerReqTypeFieldGrpMapLists=[];
PyrReqTypeFieldGrpMapsObject = {
TPSPayerId: "ddd",
RequestTypeCode : "ddd",
FieldGroupDesc : "ddd",
IsEnabled : true
};
PayerReqTypeFieldGrpMapLists.push(PyrReqTypeFieldGrpMapsObject);
$.ajax({
type: "POST",
datatype: 'application/json',
data: PayerReqTypeFieldGrpMapLists,
url: api + "saveFieldGroupForPayerRequestType",
success: function (data) {
},
error: function(XMLHttpRequest, textStatus, errorThrown){
}
}).done(function (e) {
});
问题是,从我的Ajax调用中,Web API方法被击中,但计数始终为0。
我在做什么错?
更改您的ajax我测试您需要将数据串制到服务器,其工作
$.ajax({
type: "POST",
contentType: 'application/json', // data type to send sever
dataType: 'json', // return type of data from server
data: JSON.stringify(PayerReqTypeFieldGrpMapLists),
url: 'http://localhost:8591/saveFieldGroupForPayerRequestType',
success: function (data) {
},
error: function (XMLHttpRequest, textStatus, errorThrown) {
}
}).done(function (e) {
});
json.stringify((:JSON的常见用途是将数据交换到/从Web服务器交换。将数据发送到Web服务器时,数据必须是字符串。将JavaScript对象转换到带有JSON.STRINGIFY((
您需要执行 json.stringify payerRereqtyPefieldGrpMaplists >
data: JSON.stringify(PayerReqTypeFieldGrpMapLists)
也添加ContentType。
contentType: 'application/json', // send the data type to server.
您需要将contentType
属性值设置为"application/json"
。另外,您需要在发送请求之前将data
属性值串制。
$.ajax({
type: "POST",
data: JSON.stringify(PayerReqTypeFieldGrpMapLists),
contentType: "application/json",
url: api + "saveFieldGroupForPayerRequestType",
success: function (data) {},
error: function (XMLHttpRequest, textStatus, errorThrown) {}
}).done(function (e) {
});
另外两个点
- 您应该使用
done
,fail
和always
,而不是文档页面中指出的success
,error
和complete
。最后三个回调被弃用。 -
datatype
属性应为dataType
。此属性也不允许使用'application/json'
值。文档说:可用的数据类型是文本,HTML,XML,JSON,JSONP和脚本。
所以,您可以使用此代码:
$.ajax({
type: "POST",
url: api + "saveFieldGroupForPayerRequestType",
data: JSON.stringify(PayerReqTypeFieldGrpMapLists),
dataType: "json",
contentType: "application/json"
}).done(function (data, textStatus, jqXHR) {
}).fail(function (jqXHR, textStatus, errorThrown) {
}).always(function () {
});