js опубликовать сложный объект в asp.net mvc - PullRequest
0 голосов
/ 26 апреля 2018

Формат данных в js выглядит следующим образом:

var data = {};
data = {
  orderInfo: {
   time: '2018-04-01',
   phone: '111122223333'
  },
  products: [
  {id: 1, count: 1},
  {id: 2, count: 2} 
  ]
}

однако, когда я публикую его напрямую с помощью метода jjuery ajax (), серверная часть не сможет получить то, что я опубликовал, но при публикации в формате, подобном:

var data = {};
data['orderInfo.time'] = '2018-04-01';
data['orderInfo.phone'] = 111122223333;
data['products[0].id'] = 1;
data['products[0].count'] = 1;
data['products[1].id'] = 2;
data['products[1].count'] = 2;

данные могут быть получены внутренним сервером, что вызвало это?Любая помощь будет благодарна.AJAX-код:

    $.ajax({
        type: 'POST',
        data: data,
        url: '/SaveOrderInfo'
    }).done(function (data, status, request) {

    }).fail(function (err) {

    });

упрощенный код конца

namespace balabala {
    [DataContract]
    public class RVOrderViewRqst : IExtensibleDataObject
    {
        public ExtensionDataObject ExtensionData { get; set; }

        [DataMember]
        public RVOrderCustom orderInfo { get; set; }

        [DataMember]
        public IList < RVOrderDetailCustom > products { get; set; }


        public RVOrderViewRqst()
        {
            products = new List<RVOrderDetailCustom>();
        }
    }

    [DataContract]
    public class OrderDetailInfoCustom {
        [DataMember]
        public RVOrderCustom orderInfo { get; set; }

    [DataMember]
        public IList < RVOrderDetailCustom > products { get; set; }

        public OrderDetailInfoCustom()
    {
        products = new List<RVOrderDetailCustom>();
    }
}

[DataContract]
public class RVOrderDetailCustom {
[DataMember]
        public int id { get; set; }
[DataMember]
        public int count { get; set; }
    }

[DataContract]
public class RVOrderCustom {
    [DataMember]
[DataMember]
        public string time { get; set; }
[DataMember]
        public string phone { get; set; }
    }
}

Мне сложно понять, и чувак не может найти причину.

Ответы [ 2 ]

0 голосов
/ 26 апреля 2018

Попробуйте добавить параметр dataType к вызову ajax.

dataType: 'json'

0 голосов
/ 26 апреля 2018

Попробуйте добавить dataType: 'json'

$.ajax({
        type: 'POST',
        data: data,
        url: '/SaveOrderInfo',
        dataType: 'json'
    }).done(function (data, status, request) {

    }).fail(function (err) {

    });

И вам также нужно установить в BE заголовок, как

Response.ContentType = "application/json"; Или

Response.Headers.Add("Content-type", "application/json");

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...