<object> 从 jquery ajax 将 List 传递给 Web API 时,count 始终为零



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) {
});

另外两个点

  1. 您应该使用donefailalways,而不是文档页面中指出的successerrorcomplete。最后三个回调被弃用。
  2. 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 () {
});

最新更新