【发布时间】:2012-12-21 07:37:05
【问题描述】:
我正在使用 Knockout.js 和 ASP.NET Web ApiController 完成一个新项目。我看到的许多示例在将数据发布到服务器之前执行了一些手动 JSON 序列化。此外,请求内容类型同样经常设置为“application/json”。
我想知道为什么这是必要的。我假设有一些我还没有遇到过的东西使得这要么是必需的,要么至少是可取的。
目前,使用这些 jQuery ajax 选项向服务器发送我想要的任何数据都没有问题:
cache: false,
traditional: true,
type: 'POST',
这里的示例 JS 对象和相应的服务器端 C# 模型对象可以 POST 并绑定到 ApiController 操作方法。
//JS object
var requestDataObject = {
accountId: vm.accountId,
range: [1, "a'b\"c", 3],
start: new Date(2012, 12, 12)
};
//C# model object
public class RequestData
{
public int AccountId { get; set; }
public string[] Range { get; set; }
public DateTime Start { get; set; }
}
//Action method signature
[HttpPost]
public HttpResponseMessage GetAccountUsage(RequestData requestData){
...
我错过了什么?
【问题讨论】:
-
我想这是因为使用传统的
POST只能发送简单的名称-值对——所有东西在到达服务器时看起来就像一个字符串。使用 JSON 可以让您发送更复杂的对象。 -
JSON.stringify在哪里? -
@Blazemonger,是的,当然 - 这是有道理的。因此,嵌套对象将作为 JavaScript 的 ToString() 版本(例如 [object Object])传递给服务器。请在您有时间的时候发布作为答案。
-
@JanDvorak,恐怕你没明白我的意思
-
@Alexander,我根本没有调用 JSON.stringify。这对我正在做的事情没有必要。我发布了这个问题,试图弄清楚它为什么如此受欢迎。我完全忽略了使用 JSON 与简单表单值的意义——我想到了一些关于森林和树木的东西 :)
标签: javascript jquery asp.net-web-api