我在 jQuery 1.7.2 中使用旧版本的主干.js (0.5.3),当 Backbone.sync 执行时(它是 jQuery $.ajax() 的包装器),它将 contentType 显式设置为:
params.contentType = 'application/json';
这看起来像我想要的,但是内容似乎没有作为 utf-8 发送。我正在使用 ndash 进行测试,这是我的示例字符串:
Mathematics K–10
提交到服务器后,我得到:
Mathematics K–10
现在,如果我将 contentType(在backbone.js 中)更改为:
params.contentType = 'application/json; charset=utf-8';
一切都按预期工作,我得到了正确的 ndash 字符。如果我注释掉主干中的原始 contentType 行,这也是行为。
jQuery 文档建议:
数据将始终使用 UTF-8 字符集传输到服务器
但似乎如果你显式设置了你的 contentType,那么你还需要设置一个字符集。
我的问题是,这种行为有意义吗?我原以为我们总是希望默认为 utf-8(如 jQuery 文档状态),即使我们明确更改 contentType。有没有其他人遇到过这个或有任何可能帮助我的信息?