使用jQuery $ .ajax()和$ .post()将字符串数据发送到MVC控制器

Meg*_*att 15 asp.net-mvc jquery controller

必须有一些我想念的东西.我已经尝试使用$ .ajax()和$ .post()将字符串发送到我的ASP.NET MVC控制器,并且在到达Controller时,字符串在到达时为空.所以这是我尝试的post方法:

$.post("/Journal/SaveEntry", JSONstring);
Run Code Online (Sandbox Code Playgroud)

这是我尝试的ajax方法:

$.ajax({
    url: "/Journal/SaveEntry",
    type: "POST",
    data: JSONstring
});
Run Code Online (Sandbox Code Playgroud)

这是我的控制器:

public void SaveEntry(string data)
{
    string somethingElse = data;
}
Run Code Online (Sandbox Code Playgroud)

对于后台,我使用JSON.stringify()序列化了一个JSON对象,这已经成功.我正在尝试将它发送到我的Controller以反序列化()它.但正如我所说,字符串每次都以null结尾.有任何想法吗?

非常感谢.

更新:回答我的问题是我没有使用键/值对作为$ .post()的参数.所以我尝试了这个,但字符串仍然作为null到达Controller:

$.post("/Journal/SaveEntry", { "jsonData": JSONstring });
Run Code Online (Sandbox Code Playgroud)

Meg*_*att 23

回答.在第一次更新后,我没有正确设置变量名称.我将Controller中的变量名称更改为jsonData,因此我的新Controller标题如下所示:

public void SaveEntry(string jsonData)
Run Code Online (Sandbox Code Playgroud)

我在JS中的帖子操作如下:

$.post("/Journal/SaveEntry", { jsonData: JSONstring });
Run Code Online (Sandbox Code Playgroud)

JSONstring是一个"字符串化"(或"序列化")JSON对象,我使用json.org提供的JSON插件进行序列化.所以:

JSONstring = JSON.stringify(journalEntry);  // journalEntry is my JSON object
Run Code Online (Sandbox Code Playgroud)

因此$ .post和Controller方法中的变量名必须是同一个名称,否则什么都不会起作用.很高兴知道.谢谢你的回答.


pro*_*son 6

最终答案:

似乎变量名称没有排在他的帖子中,正如我在整理数据格式问题后在评论中建议的那样(假设这也是一个问题.

实际上,请确保使用服务器端代码正在查找的正确密钥名称以及Olek的示例 - 即.如果您的代码正在寻找可变数据,那么您需要使用数据作为密钥. - prodigitalson 6小时前

@prodigitalson,有效.变量名称没有排队.你会发贴第二个答案,我可以接受吗?谢谢. - Mega Matt 6小时前

所以他需要使用键/值对,并确保他从服务器端的请求中获取正确的变量.


data参数必须是键值对

$.post("/Journal/SaveEntry", {"JSONString": JSONstring});
Run Code Online (Sandbox Code Playgroud)