2016-11-17 9 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; } 
    } 

なぜショートバージョンが動作していないのかわかりません。

注意、異なる呼び出しが

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

100%を働いたこのような試してみてください。

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"); 
関連する問題