JQuery Post 将 json 数据更改为查询字符串

JQuery Post changes json data to query string

我正在通过 $.post() 执行 JSON POST,但它似乎正在改变我的 POST 内容从 JSON 查询字符串参数 .

我POST以下到终点:

$.post('/proxy/endpoint.json', { "query": {"test": true, "msg": "test" } });

处理请求的服务器显示以下日志:

ERROR - Bad POST params: query%5Btest%5D=true&query%5Dmsg%5Btest

请求流程:

JavaScript -> IIS Rewrite Proxy -> Nginx -> Java Server endpoint, e.g. localhost:4000/endpoint.json

注意: 我已经通过 Postman 直接向 IIS 服务器测试了相同的 POST 请求,效果很好。所以只能是我的 Jquery 导致了这个问题。

关于如何改进它的任何提示?

回到jQuery.post,传递正确的params对象

例如,将您的代码更改为

$.post('/proxy/endpoint', {"test": true, "msg": "test" });

在这种情况下,答案是使用 JSON 对象的 字符串表示形式

$.post('/proxy/endpoint.json', JSON.stringify({ "query": {"test": true, "msg": "test" } }));

事实证明这是可行的。

感谢 Ahmed El-sayed 带领我走向正确的方向。