acu*_*cie 4 javascript c# ajax nancy
我在我的一个应用程序中遇到了这个问题,并将其剥离并设置了一个小问题仍然存在的测试环境.
我发布了以下对象(JSON)
{
"eventName":"Testing from Services",
"tickets":10,
"_date":"10/10/2013",
"_time":"8:00 PM",
"ticketsLocation":"Testing from Services",
"date":"2013-10-11T00:00:00.000Z"
}
Run Code Online (Sandbox Code Playgroud)
使用以下ajax调用
self.save = function (item, url, success) {
$.ajax({
type: "post",
data: JSON.stringify(item),
contentType: "application/json, charset=utf-8",
traditional: true,
datatype: "json",
url: self.domain + url,
success: success,
error: self.error
});
};
Run Code Online (Sandbox Code Playgroud)
然后将数据与服务器上的以下代码绑定
var Model = this.Bind<PropertyType>();
Run Code Online (Sandbox Code Playgroud)
哪里PropertyType是正确的类型(Event).
这是Event供参考的课程
public class Event
{
public string EventName { get; set; }
public int Tickets { get; set; }
public Venue Venue { get; set; }
public string TicketsLocation { get; set; }
public DateTime Date { get; set; }
public List<EventRequest> Requests { get; set; }
}
Run Code Online (Sandbox Code Playgroud)
这在Firefox中运行得非常好.在Chrome和IE中,Model最终成为Event具有所有空值的对象.据我所知(通过使用Fiddler),所有浏览器之间的post请求完全相同.我还在其他机器上对此进行了测试,排除了我的机器和/或浏览器的问题.
有任何想法吗?我不明白浏览器如何影响Nancy模型绑定...
简单的答案是您的内容类型无效.application/json, charset=utf-8尽管人们可能会告诉你,但没有内容类型这样的东西.即使charset是内容类型的有效,可选的扩展,它也不适用于application/json
你可以阅读这个在这里http://www.ietf.org/rfc/rfc4627.txt?number=4627根据第6 IANA considerations
JSON文本的MIME媒体类型是application/json.
输入名称:应用程序
子类型名称:json
必需参数:不适用
可选参数:n/a
有关编码的附加说明
编码注意事项:如果是UTF-8,则为8位; 二进制,如UTF-16或UTF-32
Run Code Online (Sandbox Code Playgroud)JSON may be represented using UTF-8, UTF-16, or UTF-32. When JSON is written in UTF-8, JSON is 8bit compatible. When JSON is written in UTF-16 or UTF-32, the binary content-transfer-encoding must be used.
简而言之,JSON已经是隐含的utf-8.事实上,根据3. Encoding它所述的部分
JSON文本应以Unicode编码.默认编码为UTF-8.
发送,application/json你应该去
希望这可以帮助 :-)
| 归档时间: |
|
| 查看次数: |
2005 次 |
| 最近记录: |