求助下,a.html上的json数据如何传递到b.html页面上?

fangsky 2021-04-30 11:27:11
A.html 代码如下: 点击按钮调整到b.html页面上,然后取得传递过来的json

<script>
$.Alarmctrl = function (ctrldata) {
console.log(ctrldata);
var url = "b.html?ctrldata="+encodeURI(ctrldata);
location.href =url;
}
</script>
<button class='btn btn-danger btn-xs' onclick='$.Alarmctrl({"ServerPort1":"10202","ServerPort2":"10203","CtrlType":"3","ServerIP":"192.168.1.18","CtrlID":"105"})' >远程</button>


b.html代码如下:


<script>
//接收json数组
var param = decodeURI(location.search);
if (param != null && param != "") {
param = param.substring(param.indexOf("=") + 1, param.length);
alert(param );
alert(JSON.stringify(param ));
}
</script>


求助,b.html如何获取json数据,谢谢! 上面代码没有报错,但是结果不对。
...全文
1101 13 打赏 收藏 转发到动态 举报
写回复
用AI写文章
13 条回复
切换为时间正序
请发表友善的回复…
发表回复
Gemini_Kanon 2021-05-08
  • 打赏
  • 举报
回复
字符不多的话可以直接拼接到url上,有特叔字符的话做一下处理,然后到b页面通过url把参数取出来; 字符太多的话拼接到url上会报错,可以把要传递的值通过localstorage.setItem()存到localstorage里,再到b页面通过localstorage.getItem()取出值
紫魂一号 2021-05-07
  • 打赏
  • 举报
回复
转码最好只转参数,不要整个地址转码。会有问题的。。
xiaoxiangqing 2021-05-06
  • 打赏
  • 举报
回复
用get参数比较简单
ziqi0716 2021-05-06
  • 打赏
  • 举报
回复
sha虫剂 2021-05-06
  • 打赏
  • 举报
回复
首先location.search是从问号开始截取,所以你转换的是 ?ctrldata="+encodeURI(ctrldata)" 但是你实际进行转码操作的只有ctrldata,这样取值当然会错误咯,所以你应该做的是正确去去url上面的参数,具体怎么取,百度答案很多,我这里就说了,你应该是取到?ctrldata=XXXXXXX,那个XXXX才是你进行转码操作的内容
我在地球 2021-05-05
  • 打赏
  • 举报
回复
a中用JSON.stringifyl转成字符串,用urlcompent编码参数值,参数key不需要编码。b.中再JSON.parse转回来。
luj_1768 2021-05-05
  • 打赏
  • 举报
回复
alarm用于激活远程控制b.html,alert用于客户端回报服务器有关数据,数据回报了两次:一次是程序化回报,一次是json 服务回报。(通常情况下,程序化回报用于服务处理,json 回报用于日志处理。)
fangsky 2021-05-04
  • 打赏
  • 举报
回复
引用 1 楼 画骨难画风 的回复:
大佬游戏人间来了?
偶尔写个代码,跟不上了,老了,老了!!
fangsky 2021-05-04
  • 打赏
  • 举报
回复
引用 3 楼 泡泡鱼_ 的回复:
[quote=引用 楼主 fangsky 的回复:]A.html 代码如下: 点击按钮调整到b.html页面上,然后取得传递过来的json

    <script>
	$.Alarmctrl = function (ctrldata) {
		console.log(ctrldata);
		var url = "b.html?ctrldata="+encodeURI(ctrldata);
		location.href =url;
	}
    </script>
<button class='btn btn-danger btn-xs' onclick='$.Alarmctrl({"ServerPort1":"10202","ServerPort2":"10203","CtrlType":"3","ServerIP":"192.168.1.18","CtrlID":"105"})' >远程</button>
b.html代码如下:

    <script>
        //接收json数组
        var param = decodeURI(location.search);
        if (param != null && param != "") {
            param = param.substring(param.indexOf("=") + 1, param.length);
            alert(param );
            alert(JSON.stringify(param ));
        }
    </script>
你就只是 求助,b.html如何获取json数据,谢谢! 上面代码没有报错,但是结果不对。
你想把一个对象转给b.html的ctrldata参数当值。但你传的是对象呀。encodeURI方法得不到你要的结果。你要么先用JSON.stringifyl转成字符串。获取网址参数后再JSON.parse转回来 要么就直接不要附加在?ctrldata=后面当值。直接:
Object.keys(ctrldata).map(key => key + '=' + ctrldata[key]).join('&')
。 生成 b.html?ServerPort1=10202&ServerPort2=10203&CtrlType=3&ServerIP=192.168.1.18&CtrlID=105 这样的常规网址就好了 然后你在b.html中就去读取ServerPort1,ServerPort2[/quote] 多谢,这个是一个解决办法。
ysjydss 2021-05-04
  • 打赏
  • 举报
回复
有个很简单的办法 。引入jquerysession.js 在A页面点击的时, $.session.set('变量名', json字符串) 。 在b页面用 $.session.get('变量名')取值。 很方便 你可以试试。
泡泡鱼_ 2021-04-30
  • 打赏
  • 举报
回复
引用 楼主 fangsky 的回复:
A.html 代码如下: 点击按钮调整到b.html页面上,然后取得传递过来的json

    <script>
	$.Alarmctrl = function (ctrldata) {
		console.log(ctrldata);
		var url = "b.html?ctrldata="+encodeURI(ctrldata);
		location.href =url;
	}
    </script>
<button class='btn btn-danger btn-xs' onclick='$.Alarmctrl({"ServerPort1":"10202","ServerPort2":"10203","CtrlType":"3","ServerIP":"192.168.1.18","CtrlID":"105"})' >远程</button>
b.html代码如下:

    <script>
        //接收json数组
        var param = decodeURI(location.search);
        if (param != null && param != "") {
            param = param.substring(param.indexOf("=") + 1, param.length);
            alert(param );
            alert(JSON.stringify(param ));
        }
    </script>
你就只是 求助,b.html如何获取json数据,谢谢! 上面代码没有报错,但是结果不对。
你想把一个对象转给b.html的ctrldata参数当值。但你传的是对象呀。encodeURI方法得不到你要的结果。你要么先用JSON.stringifyl转成字符串。获取网址参数后再JSON.parse转回来 要么就直接不要附加在?ctrldata=后面当值。直接:
Object.keys(ctrldata).map(key => key + '=' + ctrldata[key]).join('&')
。 生成 b.html?ServerPort1=10202&ServerPort2=10203&CtrlType=3&ServerIP=192.168.1.18&CtrlID=105 这样的常规网址就好了 然后你在b.html中就去读取ServerPort1,ServerPort2
  • 打赏
  • 举报
回复
不如 A 和B 都引入相同的一个JS 然后再操作?
画骨难画风 2021-04-30
  • 打赏
  • 举报
回复
大佬游戏人间来了?

87,915

社区成员

发帖
与我相关
我的任务
社区描述
Web 开发 JavaScript
社区管理员
  • JavaScript
  • 无·法
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧