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 带领我走向正确的方向。
我正在通过 $.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 带领我走向正确的方向。