【发布时间】:2016-05-11 08:48:50
【问题描述】:
我使用 jquery 与 REST API 进行通信。 (ASP.net Web API)。
我创建了一个简单的对象,然后使用 jquery 将它“PUT”到服务器上:
var myObject = {
name: 'just a name',
createDate: new Date()
}
$.ajax({
url: 'https://myServer/api/person/1',
dataType: 'json',
method: 'put',
data: myObject
})
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
查看 Firebug 中的网络流量,我可以看到我的 createDate 属性通过以下方式发送:
Tue Feb 02 2016 14:40:26 GMT+0100 (W. Europe Standard Time)
这将是 new Date().toString() 的默认渲染
我的 API 并不明显不喜欢这样,它接受多种格式的日期,并且确实很好地处理了普通的 JSON 版本:
new Date().toJSON()
results to: "2016-02-02T13:45:37.069Z"
如何处理?我不希望通过“手动”将每个日期转换为 JSON 来发布我的对象,这样可以轻松处理复杂的对象。
我能做什么(警告即将出现非常肮脏的伎俩),覆盖日期对象的默认 toString 方法:
Date.prototype.toString = new Date().toJSON
这行得通……但是……太糟糕了!
有什么想法吗?
【问题讨论】:
-
从你的问题的散文看来,你在谈论你发送从客户端到服务器的东西,但是你的@987654327 @call 根本没有向服务器发送 JSON,它发送的是通常的 URI 编码格式。
dataType告诉 jQuery 你期望从服务器 返回 什么,而不是你 发送 它。