Jquery MS EDGE是URL编码的AJAX POST调用
我有一个$.ajax调用,它正在使用URL编码进行编码。 我需要说明的一件事是,这只发生在Microsoft Edge中。Chrome和Firefox工作正常,没有问题 这是我的Ajax调用Jquery MS EDGE是URL编码的AJAX POST调用,jquery,json,ajax,microsoft-edge,Jquery,Json,Ajax,Microsoft Edge,我有一个$.ajax调用,它正在使用URL编码进行编码。 我需要说明的一件事是,这只发生在Microsoft Edge中。Chrome和Firefox工作正常,没有问题 这是我的Ajax调用 var promise = $.ajax({ url: "/webapp/CustomPricing/StartPricing", type: "POST", contentType: 'application/json', data: { "model": JSON.s
var promise = $.ajax({
url: "/webapp/CustomPricing/StartPricing",
type: "POST",
contentType: 'application/json',
data: {
"model": JSON.stringify(this.model),
"numHandlingUnits": this.handlingUnitsCount,
"handlingUnits": this.commoditiesCount
},
xhrFields: {
withCredentials: true
}
});
有什么想法吗?环绕数据
JSON.stringify({
"model": JSON.stringify(this.model),
"numHandlingUnits": this.handlingUnitsCount,
"handlingUnits": this.commoditiesCount
})
jQuery在发送请求之前执行所有编码。在这种情况下,发送的内容将与
$.param(yourdataobjecthere)
相同,并且与您设置的contentType不匹配,param字符串不是json。那么我应该如何更改请求?此外,此问题仅存在于MS-EDGE中。Chrome、IE和Firefox都可以正常工作。你期望它做什么?事实上,您的请求没有多大意义。然后,您需要对整个对象进行JSON.stringify处理,如下面的答案所示。您不希望使用JSON.stringify模型,因为这样您就可以对其进行双重编码(除非您的服务器希望这样),这解决了我将数据发送到服务器的问题。正如@KevinB所提到的,可能不希望将此.model
和整个对象进行stringify。