$ .ajax正在工作,但$ .post失败
问题描述:
我正在尝试使用发布数据的简短版本。我古老的方式工作。我不明白为什么新方法不起作用。
在我的控制器上,所有的值都是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);
});
答
你可以通过设置来.post
这样的:
$.post({url: uri, contentType: "application/json", data: registerdata});
+0
谢谢!这工作。我不知道为什么,因为我的登录名(如发布)没有contentType。但是这工作。谢谢。 – Craig
答
尝试这样的。
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");
界定“不工作” –
你检查,你回来了,为什么它不工作的原因的错误?我能看到的唯一区别是contentType标题 –
“新版本有什么不正确?”你缺少contentType和dataType –