首页 > 解决方案 > 使用 get 方法将数据从 ajax 发送到服务器

问题描述

这个主题与其他主题不重复我的问题是在获取方法中我有这些数据:

var things = [
   { "name": "n1" },
   { "name": "n2" }
];

阿贾克斯调用:

$.ajax({
    url: /controller/GetList,
    data: JSON.stringify(things),
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});

服务器端:

public JsonResult GetList(
    List<Thing> things) => Json("OK");

public class Thing
{
    public string name { get; set; }
}

现在,当我使用方法:“POST”调用 ajax 并在服务器端使用 [FromBody] 获取数据时,一切正常,但如果我想使用 GET 方法调用 ajax,服务器端的东西为空或空,为什么?

我试试这个:

data: JSON.stringify({ things: things })
traditional: true

但它不起作用

我的项目在 Asp.net Core 3.1

标签: jqueryajaxasp.net-core

解决方案


如果您确实想GET在 JavaScript 客户端上发出 HTTP 请求并传递数据,您可以尝试通过查询字符串传递它们,如下所示。

var par = "";

$.each(things, function (i,val) {
    par += "&things[" + i + "].name=" + val.name;
});

$.ajax({
    url: "/controller/GetList?" + par.substring(1, par.length),
    //data: JSON.stringify(things),
    contentType: "application/json; charset=utf-8",
    dataType: "json"
});

行动GetList

public JsonResult GetList([FromQuery]List<Thing> things) => Json("OK");

测试结果

在此处输入图像描述


推荐阅读