ajax返回数据报406,ajax – 406返回JSON对象时出错 – 意外内容

开发者遇到一个问题,他们的Ajax请求返回406 Not Acceptable错误,预期的JSON响应中缺少键值对。代码片段展示了$.ajax调用和控制器的响应设置。尽管尝试了多种解决方案,如配置IIS、允许所有响应类型和更改文化设置,问题仍未解决。问题可能涉及多租户环境和MIME类型的不匹配。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一些同事和我有一个问题,即ajax调用的响应返回一些意想不到的内容.而不是使用各种属性获取简单的

JSON对象,result.responseText的值是通用406状态错误页面的HTML标记,表示浏览器不接受MIME类型.

这样的电话是这样的:

$.ajax({

url: '/promociones/cincogratis/canjear-codigo-promocional',type: this.method,data: $(this).serialize(),success: function (result) {

$('.promotion_banner .loader').hide();

$('.promotion_banner').html(result);

},error: function (result) {

var obj = result.responseText;

if (obj.isRedirect) {

document.location = obj.redirectUrl;

}

else {

$('.promotion_banner .loader').hide();

$(".error-wrapper").removeClass("hidden");

var generic_error = document.getElementById('generic_error').value;

$(".error-wrapper p").html(generic_error);

}

},beforeSend: function() {

$('.promotion_banner .loader').show();

}

});

控制器对呼叫的响应如下:

Response.StatusCode = (int)HttpStatusCode.NotAcceptable; // 406

return Json(new { errorMessage = LocalErrorMessages.Website_Promotions_FreeFiver_General_Problem,isRedirect = false } );

我们希望result.responseText包含errorMessage和isRedirect的键值,但它们不在那里.

值得指出的是,这个代码是多租户的,由当前的应用程序和另一个代码共享,它的工作非常好.

我们尝试过:

– 配置IIS以显示详细的错误响应而不是自定义页面以获取更多详细信息 – 为解决问题提供了额外的帮助.

– 允许所有响应内容类型进行呼叫

– 改变我们网站的文化(目前是es-ES)

– 各种web.config调整

有没有人遇到过这个问题?

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值