gpt4 book ai didi

javascript - 为什么我丢失了我的参数?

转载 作者:行者123 更新时间:2023-11-30 18:39:42 27 4
gpt4 key购买 nike

我有一个 servlet 进程 jsoncallback 请求。服务器使用 getQueryString 得到了这个

"jsoncallback=jQuery16208276397785205389_1314579791091&pams={%27title%27:%27%u56DE%u590D%uFF1Afoo%27,%27tag%27:%27%27,%27content%27:%27TEST%27,%27Friedly%27:%27%27,%27IsPrivate%27:%27%27,%27Contact%27:%27%27,%27base%27:5197}&_=1314579902441"

但是当我使用

rqs = req.getParameter("pams");

调试器显示 rqs 为空。但这行得通

jsoncallback = req.getParameter("jsoncallback");

格式似乎是正确的。为什么我无法通过 pams 获取“pams”参数?

    String rqs = req.getQueryString();
if (rqs != null) {
if (req.getParameterMap().containsKey("jsoncallback")) {
rqs = req.getParameter("pams");
jsoncallback = req.getParameter("jsoncallback");
}
QS = URLDecoder.decode(rqs, "UTF-8");
}

最佳答案

那是因为它不合适URL-encoded .那些大括号、冒号和逗号在 URL 中是非法的。我知道你的 JSON 字符串原来是这样的,对吧?

var json = {
'title': '回复:foo',
'tag': '',
'content': 'TEST',
'Friedly': '',
'IsPrivate': '',
'Contact': '',
'base': 5197
};

(实际上是 invalid JSON,那些单引号应该是双引号)

您需要先将JSON 序列化为String。 JavaScript 字符串表示应如下所示:

var jsonString = '{"title":"回复:foo","tag":"","content":"TEST","Friedly":"","IsPrivate":"","Contact":"","base":5197}';

(为了完整起见,我修复了那些无效的单引号)

如何获得该格式留给您作为练习。 JSON-js在这方面很有用。

那么,你应该使用 JavaScript 的 encodeURIComponent()函数将其 URL 编码为适当的 HTTP 请求参数值格式:

var urlEncodedJsonString = encodeURIComponent(jsonString);

应该得到这个值

%7B%22title%22%3A%22%E5%9B%9E%E5%A4%8D%EF%BC%9Afoo%22%2C%22tag%22%3A%22%22%2C%22content%22%3A%22TEST%22%2C%22Friedly%22%3A%22%22%2C%22IsPrivate%22%3A%22%22%2C%22Contact%22%3A%22%22%2C%22base%22%3A5197%7D

最后,您可以将该值包含在 HTTP 请求的查询字符串中,并且您应该能够以通常的方式使用 getParameter()(然后提供给 Gson 等一些 JSON 解析器以获取完全有值(value)的 Java 对象)。请注意,您不需要手动对其进行 URL 解码。当您使用 getParameter() 获取单个参数而不是手动解析来自 getQueryString() 的查询字符串时,Servlet API 会为您做这件事。 Map#containsKey() 调用也完全没有必要,只需通过 getParameter() 获取参数即可。如果它是 null,那么它只是没有被发送,否则它就在那里。

关于javascript - 为什么我丢失了我的参数?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7225203/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com