Javascript $.ajax正在工作,但$.post失败

Javascript $.ajax正在工作,但$.post失败,javascript,jquery,Javascript,Jquery,我正在尝试使用简写版的发布数据。我的老办法奏效了。我不明白为什么新方法不起作用 在我的控制器上,所有值都为空。但在旧的工作版本中,它们解析得很好 工作: $.ajax({ url: 'api/User/Register', type: 'POST', contentType: 'application/json', data: JSON.stringify({ Ema

我正在尝试使用简写版的发布数据。我的老办法奏效了。我不明白为什么新方法不起作用

在我的控制器上,所有值都为空。但在旧的工作版本中,它们解析得很好

工作:

 $.ajax({
            url: 'api/User/Register',
            type: 'POST',
            contentType: 'application/json',
            data: JSON.stringify({
                EmailAddress: self.RegisterEmailAddress(),
                Password: self.RegisterPassword(),
                TimeZoneID: self.RegisterTimeZoneID(),
                Firstname: self.RegisterFirstname(),
                Surname: self.RegisterSurname()
            }),
            dataType: 'json'
        }).done(function (data) {
            alert(data);
        });
不工作:

var registerdata = JSON.stringify({
    EmailAddress: self.RegisterEmailAddress(),
    Password: self.RegisterPassword(),
    TimeZoneID: self.RegisterTimeZoneID(),
    Firstname: self.RegisterFirstname(),
    Surname: self.RegisterSurname()
});

var uri = 'api/User/Register';

$.post(uri, registerdata)
    .done(function(data){
        alert(data);
    });

新版本有什么不正确之处? 请注意,在我发布时,标题包含正确的数据:

{"EmailAddress":"me@here.com","Password":"password","TimeZoneID":"4","Firstname":"Test","Surname":"Users"}:
在我的控制器上,api如下所示:

[HttpPost]
public string Register(UserRegistrationRequestDto register)
{
    var reply = _userService.Register(register);
    return $"{reply.FriendlyMessage}";
}
$.post({url: uri, contentType: "application/json", data: registerdata});
UserRegistrationRequestDto定义为:

 public class UserRegistrationRequestDto : BaseRequestDto
    {
        public string EmailAddress { get; set; }
        public string Password { get; set; }
        public int TimeZoneID { get; set; }
        public string Firstname { get; set; }
        public string Surname { get; set; }
    }
我不明白为什么短版本不起作用

注意,另一个电话100%有效

 var logindata = JSON.stringify({
            EmailAddress: self.LoginEmailAddress(),
            Password: self.LoginPassword()
        });

        var uri = 'api/User/Login'

        $.post(uri, logindata)
            .done(function (data) {
                alert(data);
            });
像这样试试

var registerdata = {
            EmailAddress: self.RegisterEmailAddress(),
            Password: self.RegisterPassword(),
            TimeZoneID: self.RegisterTimeZoneID(),
            Firstname: self.RegisterFirstname(),
            Surname: self.RegisterSurname()
        };
var uri = 'api/User/Register';

$.post(uri, registerdata,
     function(response){
        alert(response);
      },"JSON");

您可以像这样将设置传递到
。post

[HttpPost]
public string Register(UserRegistrationRequestDto register)
{
    var reply = _userService.Register(register);
    return $"{reply.FriendlyMessage}";
}
$.post({url: uri, contentType: "application/json", data: registerdata});

定义“不工作”您是否检查了返回的错误,以了解其不工作的原因?我能看到的唯一区别是contentType标题“新版本有什么不正确?”缺少contentType和DataTypeAPI调用时所有值都为NULL。所以,“register”到达控制器,但所有字段都为空。@SergioTulentsev和Rory-我刚刚向同一控制器添加了一个不同的调用,除了,它是登录调用,并且在没有contentType的情况下100%工作。谢谢!成功了。我不知道为什么,因为我的登录名(发布时)没有contentType。但这起作用了。谢谢