请选择 进入手机版 | 继续访问电脑版
 找回密码
 立即注册

QQ登录

只需一步,快速开始

Hazel坏坏猫

初级会员

8

主题

34

帖子

200

积分

初级会员

积分
200
5金币
发送端与接收端均为已发布到服务端的应用,
发送端的参数使用JavaScript语句拼接URL跳转,
接收端的也是用JavaScript的getreqest函数去解析,截取字符处理。
但是当传递内容为中文时,解析结果会变成乱码,但传递英文和数字时是正常的,为什么?

5 个回复

倒序浏览
wwbb
中级会员   /  发表于:5 天前
沙发
本帖最后由 wwbb 于 2025-7-4 13:49 编辑


发送端(JavaScript)
在拼接URL时,使用encodeURIComponent()函数对参数值进行编码。这将确保所有非ASCII字符都被转换成%xx形式的安全URL字符。
  1. let param = "中文参数";
  2. let url = "http://example.com/path?param=" + encodeURIComponent(param);
  3. window.location.href = url;
复制代码


接收端(JavaScript)
在获取并解析URL参数时,首先从URL中提取出原始的编码字符串,然后使用decodeURIComponent()函数将其解码回原始的字符串。
假设你使用的是类似于window.location.search的方式获取查询字符串,可以通过以下方式解析:
  1. function getQueryVariable(variable) {
  2.     let query = window.location.search.substring(1);
  3.     let vars = query.split('&');
  4.     for (let i = 0; i < vars.length; i++) {
  5.         let pair = vars[i].split('=');
  6.         if (decodeURIComponent(pair[0]) == variable) {
  7.             return decodeURIComponent(pair[1]);
  8.         }
  9.     }
  10.     return false;
  11. }

  12. let param = getQueryVariable('param');
  13. console.log(param); // 输出解码后的参数值
复制代码



回复 使用道具 举报
Hazel坏坏猫
初级会员   /  发表于:5 天前
板凳
本帖最后由 Hazel坏坏猫 于 2025-7-4 17:38 编辑
wwbb 发表于 2025-7-4 13:48
发送端(JavaScript)
在拼接URL时,使用encodeURIComponent()函数对参数值进行编码。这将确保所有非ASC ...

返回的结果是flase,我看到发送端的内容是中文,是不是意味着发送端转换失败了?而且接收端返回值一直是flase

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:前天 09:37
地板
您好,您那边发送端具体是如何传递中文参数的。然后接受端是如何去接受中文参数的呢。可以给出相关示例不?
如果是在活字格里,想要在页面里获取 URL 路径上的参数,可以通过 GETURLQUERYVALUE("参数名") 这个公式去获取。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
Hazel坏坏猫
初级会员   /  发表于:前天 10:17
5#
Simon.Sun 发表于 2025-7-7 09:37
您好,您那边发送端具体是如何传递中文参数的。然后接受端是如何去接受中文参数的呢。可以给出相关示例不? ...

用js发送中文参数的,但是接收端地址是发布到我们自己服务器的应用。这个示例 我应该怎么展示呢因为我们在测试也要发布到服务器后测试。

顺便也想问一下,这种情况没办法用f12调试,管理控制台也没办法查出参数传递过程的话,我应该怎么测试比较好
回复 使用道具 举报
Simon.Sun活字格认证 Wyn认证
超级版主   /  发表于:前天 15:31
6#
本帖最后由 Simon.Sun 于 2025-7-7 15:32 编辑

您好,发送方在在 URL 跳转时,参数的处理,如果是用 JS 的话您可以参考一楼格友 wwbb 的方法,这边测试了下是可以的。
如果是发布后的调试,可以考虑把应用的调试模式打开:
这个功能 10.0 及之后支持。

活字格10.0新功能解密:十三、应用发布后支持调试(控制台console操作日志)
https://gcdn.grapecity.com.cn/showtopic-202900-1-1.html
(出处: 葡萄城开发者社区)


这样 f12 可以看到活字格里执行的相关命令日志。
如果是活字格内 JavaScript 脚本的调试,可以在源代码里找到这个(runJavaScriptCommandFunctions.js)脚本,打上断点也能调试


本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 立即注册
返回顶部