2016-11-17 65 views
1

我正在尝试使用发布数据的简短版本。我古老的方式工作。我不明白为什么新方法不起作用。

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

工作:

$.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":"[email protected]","Password":"password","TimeZoneID":"4","Firstname":"Test","Surname":"Users"}: 

在我的控制器API看起来是这样的:

[HttpPost] 
public string Register(UserRegistrationRequestDto register) 
{ 
    var reply = _userService.Register(register); 
    return $"{reply.FriendlyMessage}"; 
} 

而且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); 
      }); 
+0

界定“不工作” –

+2

你检查,你回来了,为什么它不工作的原因的错误?我能看到的唯一区别是contentType标题 –

+0

“新版本有什么不正确?”你缺少contentType和dataType –

回答

2

你可以通过设置来.post这样的:

$.post({url: uri, contentType: "application/json", data: registerdata}); 
+0

谢谢!这工作。我不知道为什么,因为我的登录名(如发布)没有contentType。但是这工作。谢谢。 – Craig

-1

尝试这样的。

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"); 
相关问题