【问题标题】:Receive json object through ajax post request通过ajax post请求接收json对象
【发布时间】:2019-01-06 19:32:31
【问题描述】:

无法检测到问题

我正在尝试使用 ajax 发布请求从服务器获取数据,但是当 ajax 请求命中后端 c# 方法时,其数据部分变为空

这是我的js代码

 let da = '{"sidx":'+sid+',"idx":'+cur+'}';
    da = JSON.parse(da);
    $.ajax({
        type: "POST",
        url: "../RegSaleman/next",
        data: {x:da},
        datatype: "Json",
        complete: function (dataret) {




        }
    });

而c#代码是

  [HttpPost]
    public JsonResult next(JsonResult x)
    {

    }

【问题讨论】:

  • 尝试将参数类型从 JsonResult 替换为字符串
  • 您的JsonResult 型号是什么?它只是data: { sidx: sid, idx: cur } 假设JsonResult 包含这两个属性
  • 是的,当我们使用 json.stringify 时有效,但我想接收任何 c# json 类
  • @StephenMuecke 我认为他正在尝试传递 JsonResult mvc 操作结果。这永远不会奏效。
  • Jsonresult 不是模态的,它是 C# 内置类

标签: c# jquery asp.net-mvc asp.net-ajax


【解决方案1】:

您正在尝试读取 JsonResult,这是错误的。此类用于来自服务器的响应。 您可以创建一些将由 MVC 框架自动映射的数据模型(简单类)。 假设您有 JSON 对象:

{
   "id": "someValue",
   "foo" : 3,
   "bar" : "bar string"
}

你可以创建一个类

public class MyClass
{
    public string Id {get;set;}
    public int Foo {get;set;}
    public string Bar {get;set;}
}

如您所见,它甚至可以映射不同大小写的变量(如 Foo 和“foo”),但这种行为可以在需要时更改。 你的方法是:

[HttpPost]
public JsonResult next(MyClass x)
{

}

【讨论】:

  • 是的,这行得通。但我只是想找到一个根据json对象自动映射的c#类有没有?
  • 您可以作为字符串发送,然后使用 newtonsoft.json 反序列化 Json 字符串: var jsonConverted = JsonConvert.DeserializeObject(jsonString);
  • Ohmmmmm 有点接近。谢谢 除了字符串没有其他方法吗?
  • 但是有什么理由不能是字符串?因为当您从 ajax 发送到类时,它会尝试转换为您通知的类型,所以如果您尝试 string ,它将在您发送 '{" 时获取 json sidx":'+sid+',"idx":'+cur+'}' ,然后使用反序列化,您将已经能够使用每个键,因此您可以将 sidx 称为 jsonConverted["sidx "].toString() 你会得到你传递的值。
【解决方案2】:
 var obj = new Object();

 $.ajax({
    type: "POST",
    url: "/RegSaleman/next",
    data: JSON.stringify(o),
    contentType: "application/json; charset=utf-8",
    dataType: "json",
    success: function (response) {


    },
    failure: function (response) {

    },
    error: function (response) {

    }
});

【讨论】:

  • 问题是关于接收端(服务器端),而不是发送端(客户端)。
猜你喜欢
  • 2017-05-04
  • 2019-11-26
  • 2015-10-09
  • 1970-01-01
  • 1970-01-01
  • 2018-09-26
  • 1970-01-01
  • 2012-09-04
  • 2017-03-22
相关资源
最近更新 更多