发送 json 时对 Net 7 项目的 Ajax 调用不起作用

问题描述 投票:0回答:1

我的 MVC 项目中有一个 ajax 调用,它调用 net core 7 控制器。当我尝试将 json 发送到控制器时,控制器中的 accountId 为 null。使用 Object() 是一种解决方法,但我想使用 json。

控制器:

[HttpGet]
public JsonResult GetAccount(string accountId)
{ ... }

有效的 Ajax:

var myObject = new Object();

myObject.accountId = "123";

// Perform the remote call.
$.ajax({
  url: 'ManageUsers/GetAccount',
  type: 'GET',
  dataType: 'json',
  contentType: 'application/json;',
  data: myObject,
});

Ajax 不起作用:

var requestData = JSON.stringify(`
{`
accountId: "123"`
`});  

$.ajax({
  url: 'ManageUsers/GetAccount',
  type: 'GET',
  dataType: 'json',
  contentType: 'application/json;',
  data: requestData ,
});
     

我在控制器中尝试了不同的组合。

[FromBody]
[FromQuery] 
不起作用。还尝试返回
ActionResult
而不是
JsonResult
,这不会影响任何内容。

我还注意到,如果我将类型更改为 POST 并将控制器更改为 HttpPost,accountId 将为 null。

jquery ajax asp.net-mvc core
1个回答
0
投票

你必须决定你需要什么。 Http Get 不适用于 json,因此将 action 属性更改为 post

[HttpPost]
public JsonResult GetAccount([FromBody] Account account)
{ 
var accountId=account.AccountId;
... 
}

并创建一个类

public class Account
{
public string AccountId {get; set;}
}

但恕我直言,最好修复ajax

var accountId: "123";

$.ajax({
  url: 'ManageUsers/GetAccount?accountId='+ accountId,
  type: 'GET',
  dataType: 'json'
  ....
});
© www.soinside.com 2019 - 2024. All rights reserved.