環境
.Core3.1
C#
現象
Ajax の Post でクライアントからJsonデータを送り、サーバー側のWebAPIコントローラーでそのJsonデータを受け取りたいのですが、データがnullになって困っています。
同様の質問を確認して試行錯誤しているのですが成功しないため、どなたかお知恵をお借りしたいです。
クライアントからの送信データ
{ str : "ABC" }
下記にあるようにプログラムし、
Getメソッドでは、サーバー側で値の取得に成功しましたが、
Postメソッドでは、サーバー側メソッドの引数がnullになってしまいます。
ためしたプログラム(サーバー側)
C#
1[Route("api/Test")] 2[ApiController] 3public class TestController : ControllerBase 4{ 5 [HttpGet("get1")] 6 public string GetData([FromQuery] string str) 7 { 8 Debug.WriteLine(str); 9 return ""; 10 } 11 12 [HttpPost("post1")] 13 public void PostData(string str) 14 { 15 Debug.WriteLine(str); 16 } 17}
ためしたプログラム(クライアント側)
C#
1/* テスト用Getメソッド */ 2function button_get_click() { 3 var pUrl = "/api/Test/get1"; 4 5 $.ajax({ 6 type: "GET", 7 url: pUrl, 8 cache: false, 9 dataType: "json", 10 data: { str : "ABC" }, 11 async: false, 12 success: function (data) { 13 console.log("success"); 14 } 15 }); 16}; 17 18/* テスト用Postメソッド */ 19function button_post_click() { 20 var pUrl = "/api/Test/post1"; 21 22 $.ajax({ 23 type: "POST", 24 url: pUrl, 25 cache: false, 26 contentType: 'application/json', 27 dataType: "json", 28 data: JSON.stringify({ str: "ABC" }), 29 //data: { str: "ABC" } ←これでもやはりnullでした 30 async: false, 31 success: function (data) { 32 console.log("success"); 33 } 34 }); 35};
◆Postもサーバー側には到達しているのですが、引数がnullになってしまいます。
◆ブラウザ(Edge)でF12を押し、ネットワークの要求本文には「{"str":"ABC"}」が設定されていることを確認しました。
よろしくお願いいたします。
回答1件
あなたの回答
tips
プレビュー