【发布时间】:2011-12-20 19:07:18
【问题描述】:
我正在使用 jQuery ajax 通过 HTTP POST 调用我的 WCF 服务。响应是 GZIP 编码的,这会导致我的环境出现问题。 (见this question)。如果响应不是 GZIP 编码的,一切都很好。
所以在 Fiddler 中查看,我看到 jQuery 生成的查询具有以下标题:
Accept-Encoding: gzip,deflate,sdch
如果我通过 fiddler 将此值更改为 None,则响应不会被压缩,这正是我想要的。我需要做的就是更改“Accept-Encoding”标头中的值。
似乎无法通过.ajax 命令更改此标头值。 (见this forum post)。
谁能告诉我有哪些选项可以更改此标头值。
这是我目前的尝试。我的headers 参数似乎被忽略了。
$telerik.$.ajaxSetup({
accepts: 'application/json, text/javascript, */*'
});
var parameters = {
"playerId": args.playerId
};
var dataInJsonFormat = '{ "playerId": ' + args.playerId + '}';
var ajaxCallParameters = {
accepts: 'application/json, text/javascript, */*',
async: true,
cache: false,
contentType: "application/json; charset=utf-8",
url: "../Services/CmsWebService.svc/SendUpdateRequestToPlayer",
headers: { "Accept-Encoding" : "None" },
type: "POST",
data: dataInJsonFormat,
dataType: 'json',
error: function (jqXHR, textStatus, errorThrown) {
var errorString = 'Error thrown from ajax call: ' + textStatus + 'Error: ' + errorThrown;
var displayPanel = document.getElementById('requestStatusUpdateResults');
$telerik.$(displayPanel).text(errorString);
},
success: function (data, textStatus, jqXHR) {
var displayPanel = document.getElementById('requestStatusUpdateResults');
$telerik.$(displayPanel).text(data.d);
}
};
$telerik.$.ajax(ajaxCallParameters);
【问题讨论】: