Jos*_*iel 1 javascript jquery asp.net-web-api
我正在使用Knockout.js和ASP.NET Web ApiController完成一个新项目。我看到的许多示例都会在将数据发布到服务器之前执行一些手动JSON序列化。此外,请求内容类型通常也设置为“ application / json”。
我想知道为什么这是必要的。我以为我还没有遇到过使它成为必需或至少可取的东西。
目前,使用这些jQuery ajax选项将所需的任何数据发送到服务器都没有问题:
cache: false,
traditional: true,
type: 'POST',
Run Code Online (Sandbox Code Playgroud)
这是示例JS对象和相应的POST并绑定到ApiController操作方法的服务器端C#模型对象。
//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){
...
Run Code Online (Sandbox Code Playgroud)
我想念什么?
从历史上看,GET(以及随后的POST)只能发送键值对,并且键应该是唯一的。
当PHP出现时,它定义了“如果一个键包含方括号,让我们建立一个数组”。这使程序员可以调用其复选框name="chkbox[]"
,让表单正常提交,并$_POST['chkbox']
作为数组读取。定义了其他一些服务器语言,“如果在查询字符串中重复键,那么我们构建一个数组”。
如果names[]=1
要支持该密钥,为什么不names[a][b][c]=1
呢?服务器知道他们应该做什么:Assign names = {a:{b:{c:"1"}}}
。
这使程序员可以对对象进行编码以查询字符串,但要注意以下几点:
checkboxes[]=ch1&checkboxes[]=ch2&...
vs。checkboxes=["ch1","ch2",...]
traditional
(或诉诸于postVars.get("names[]")
这样做的服务器)使用JSON,
null
,...简而言之,如果您只需要对键值对进行编码,那么这就是普通GET或POST所擅长的。如果您需要编码数组,那么JSON绝对值得考虑。如果您需要更复杂的东西,则JSON是某些服务器使用的唯一方法。
归档时间: |
|
查看次数: |
1392 次 |
最近记录: |